[프로그래머스] Lv.0 369게임 JavaScript

Janet·2023년 4월 7일
0

Algorithm

목록 보기
124/314

문제 설명

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ order ≤ 1,000,000

입출력 예

orderresult
31
294232

입출력 예 설명

입출력 예 #1

  • 3은 3이 1개 있으므로 1을 출력합니다.

입출력 예 #2

  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

※ 공지 - 2023년 03월 24일 테스트 케이스가 추가되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.


문제풀이

💡 문제풀이 과정

  • 답안 1번: 주어진 매개변수 order는 숫자 타입이므로, String type으로 변경해야 배열 형태로 나눌 수 있다. 따라서 […String(order)]하여 문자열 타입의 배열 형태로 복사 후 filter()함수를 통해 [‘3’, ‘6’, ‘9’]가 있는지 includes()를 사용하여 포함된 것의 length를 반환한다.
  • 답안 2번: 다른 사람의 풀이로 문자열 형태의 배열로 복사한 ordersplit(/[369]/)로 분할하여 그것들의 length - 1을 반환하였다. split()에 정규표현식을 사용하였다는 점이 기발하다. 다음 예제 참고 ⬇️
let order = 29423;
console.log(String(order).split(/[369]/)); // ['2', '42', '']
  • 답안 3번: matchAll(/[3|6|9]/g).length를 사용하여 order에서 매칭되는 모든 것들의 개수를 반환하였다.

✅ 답안 #1

function solution(order) {
  return [...String(order)].filter((v) => ["3", "6", "9"].includes(v)).length;
}

✅ 답안 #2

function solution(order) {
  return ("" + order).split(/[369]/).length - 1;
}

✅ 답안 #3

function solution(order) {
  return [...order.toString().matchAll(/[3|6|9]/g)].length;
}
profile
😸

0개의 댓글