머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.
function solution(order) {
let count = 0
const pattern = /[369]/g;
if (order.toString().match(pattern)) {
count++
}
return count
}
※ 참고로 틀린 답이다. 어디가 틀렸을까?
현재 코드에서는 order에 대해 1회만 정규표현식을 적용하고 있기 때문에 order에서 여러 개의 3, 6, 9가 있는 경우에도 count가 1로 고정된다.
따라서, order의 모든 자릿수에 대해 정규표현식을 적용하여 3, 6, 9가 하나 이상 포함된 부분 문자열을 찾아야 한다. 이를 위해서는 order를 문자열로 변환한 후, 문자열의 각 자릿수에 대해 정규표현식을 적용해야 한다.
function solution(order) {
let count = 0;
const pattern = /[369]/g;
const orderStr = order.toString();
for (let i = 0; i < orderStr.length; i++) {
if (orderStr.charAt(i).match(pattern)) {
count++;
}
}
return count;
}
function solution(order) {
var answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
return answer;
}
function solution(order) {
return (''+order).split(/[369]/).length-1;
}