[프로그래머스] k의 개수


문제 설명

1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 ijk가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ i < j ≤ 100,000
  • 0 ≤ k ≤ 9

입출력 예

ijkresult
11316
105055
31020

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.

입출력 예 #3

  • 3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.

나의 풀이

function solution(i, j, k) {
  var answer = "";
  for (i; i <= j; i++) {
    answer += i;
  }
  return answer.split(k).length - 1;
}

나의 두번째 풀이(Code Refactoring)

function solution(i, j, k) {
  let result = "";
  for (i; i <= j; i++) {
    result += i;
  }
  return result.split("").filter((v) => v.includes(k)).length;
}

// 1. result에 i부터 j사이의 값을 문자열로 저장
// 2. i~j 값중에 k를 포함하는 문자의 갯수를 리턴

참고 할 만한 다른 사람의 코드

function solution(i, j, k) {
  let str = Array(j - i + 1)
    .fill(i)
    .map((v, i) => v + i)
    .join("");
  return Array.from(str).filter((t) => +t === k).length;
}