-0을 고려하지 않아서 테스트 케이스에서 통과가 되지 않았다.
-조건에 0보다 큰 값일 경우를 추가.
function solution(order) {
var arr = [];
var str = order.toString();
for(let i=0; i<str.length; i++){
if(Number(str[i])>0 && Number(str[i])%3 === 0){
arr.push(str[i])
}
}
return arr.length
}
-풀이는 답답해서 이것저것 넣다가 많이 이상해졌다.
function solution(order) {
var answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
return answer;
}
-정규식을 사용해 3,6,9에 해당하는 것들만 뽑아 배열을 만들고 길이를 반환했다.
function solution(order) {
return (''+order).split(/[369]/).length-1;
}
-공백을 더해 쉽게 문자열로 바꿔줬다.
-이후 3, 6, 9를 기준으로 나눈 배열을 만들어 3, 6, 9를 제외한 숫자들만 배열에 담았다.
ex) order: 3 => ["", ""] order : 29423 => ["2","42",""]
-그리고 그 길이에서 1을 빼서 리턴하여 값을 구했다.
function solution(order) {
const mySet = new Set([3,6,9]);
return String(order).split('')
.filter(num => mySet.has(Number(num)))
.length;
}
-set으로 3,6,9를 포함하는 배열을 만든뒤 매개변수를 문자열로 바꾼 뒤 split으로 나눠 mySet이 가진 데이터에 해당하는 것들로만 배열을 만들어 길이를 반환했다.
-(''+order)와 같이 공백을 더해 쉽게 숫자를 문자열로 바꿔줄 수 있다.
-문자열.split(/[카운팅 대상 값들]/).length-1은 좋은 패턴이 될 거 같다.