369 게임

김종현·2023년 4월 12일
0

1. 막힌 부분

-0을 고려하지 않아서 테스트 케이스에서 통과가 되지 않았다.

2. 막힌 부분의 해결

-조건에 0보다 큰 값일 경우를 추가.

3. 내 풀이

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
}

-풀이는 답답해서 이것저것 넣다가 많이 이상해졌다.

4. 다른 사람의 풀이 중 좋았던 코드 및 분석

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이 가진 데이터에 해당하는 것들로만 배열을 만들어 길이를 반환했다.

5. 새로 배운 것/복습해야 할 것

-(''+order)와 같이 공백을 더해 쉽게 숫자를 문자열로 바꿔줄 수 있다.
-문자열.split(/[카운팅 대상 값들]/).length-1은 좋은 패턴이 될 거 같다.

profile
나는 나의 섬이다.

0개의 댓글