1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i
, j
, k
가 매개변수로 주어질 때, i
부터 j
까지 k
가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
i
< j
≤ 100,000k
≤ 9i | j | k | result |
---|---|---|---|
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
입출력 예 #1
입출력 예 #2
입출력 예 #3
✅ 답안 #1
function solution(i, j, k) {
let nums = "";
for (let x = i; x <= j; x++) nums += x;
const regexp = new RegExp(`[^${k}]`, "g");
// k가 포함되지 않은 모든 문자 필터링. 정규식 [^a] : a를 제외한 것
return nums.split(regexp).join("").length;
}
// 예시)
// const [i, j, k] = [1, 31, 1];
// nums = 12345678910111213
// nums.split(regexp) = ['1', '', '', '', '', '', '', '', '1', '111', '1', '']
✅ 답안 #2
function solution(i, j, k) {
let nums = "";
for (let x = i; x <= j; x++) nums += x;
return nums.split(k).length - 1;
}
// 예시)
// const [i, j, k] = [1, 31, 1];
// nums = 12345678910111213
// nums.split(k) = ['', '23456789', '0', '', '', '2', '3']
❌ 오답: 테스트 3번 런타임 에러
function solution(i, j, k) {
let nums = "";
for (let x = i; x <= j; x++) nums += x;
const regexp = new RegExp(`${k}`, "g");
return nums.match(regexp).length;
}