[프로그래머스] Lv.0 k의 개수 JavaScript

Janet·2023년 4월 20일
0

Algorithm

목록 보기
160/314

문제 설명

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 합니다.

문제풀이

✅ 답안 #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;
}
profile
😸

0개의 댓글