문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ i < j ≤ 100,000
- 0 ≤ k ≤ 9
풀이
const solution = (i, j, k) => {
let count = 0;
for(let start = i; start <= j; start ++){
String(start).split("").forEach(el => el.includes(k) && count ++);
}
return count;
}
그냥 간단하게 생각하고 풀기로 했다.
i부터 j까지 k가 몇번 등장하는지 등장 횟수를 구해주면 되는 문제라
우선 for문으로 i부터 j까지 반복문을 돌리기로 했고,
이후 해당 숫자를 문자열로 변경한 뒤 split() 매서드로 글자글자마다 쪼개주었다.
첫 답변 제출 시에는 split()은 따로 안해주고 문자열에서 includes가 참일때 count ++ 을 해주었는데
문제는 "11" 인경우에는 카운트를 2번 올려주어야 했다 -_-;;
그래서 다시, 현재 숫자를 문자열로 바꾸고, 글자글자마다 나눠준 뒤, 해당 배열을 forEach로 순회하며
원소가 k를 포함하고 있으면 count를 ++ 해주는 식으로 처리 했다.