문제 설명
머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.
풀이
function solution(order) {
const count = String(order).match(/[369]/g)?.length || 0;
return count;
}
- String(order)는 숫자를 문자열로 변환 ➡️ match() 메서드는 문자열에 정규식을 적용하여 일치하는 부분을 찾아 배열로 반환
- 정규식 /[369]/g를 사용하면 숫자에서 '3', '6', '9'에 해당하는 모든 문자를 찾아줍니다.
- '?.length'는 앞의 표현식이 null 또는 undefined인 경우 null을 반환하고, 그렇지 않은 경우 배열의 길이를 반환합니다.
즉, match(/[369]/g)가 null이거나 undefined인 경우 count에는 null이 할당되며, 그렇지 않은 경우 배열의 길이가 count에 할당됩니다. - '|| 0'은 count 값이 null이거나 undefined인 경우 0으로 대체하는 부분입니다.
따라서 count에는 실제 박수 횟수가 할당되거나, order에 3, 6, 9가 없는 경우 0이 할당됩니다.
String.prototype.match()
match() 메서드는 문자열이 정규식과 매치되는 부분을 검색합니다. match() 메서드의 인자로는 정규식을 사용할 수 있습니다.
const str = "Hello, World!";
const matches = str.match(/[aeiou]/g);
console.log(matches); // ["e", "o", "o"]
참고:
'알고리즘' 카테고리의 다른 글
[프로그래머스] 7의 개수 (0) | 2023.06.27 |
---|---|
[프로그래머스] 배열 회전시키기 (0) | 2023.06.20 |