코딩 테스트

[프로그래머스 Level 0] 저주의 숫자 3

y_flm 2025. 4. 4. 17:30
문제:
3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다.
3x 마을 사람들의 숫자는 다음과 같습니다.
10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자
1 1 6 8
2 2 7 10
3 4 8 11
4 5 9 14
5 7 10 16
정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.

 

문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/120871?language=javascript

 

풀이보기
더보기
function solution(n) {
    let result = {};
    let count = 0;
    
    for(let i = 1; i <= n; i++) {
        let num = i + count;

        while (num.toString().includes('3') || num % 3 === 0) {
            count++;
            num = i + count;
        }

        result[i] = num;
    }
    
    return result[n];
}

나는 10진수와 마을에서 쓰는 수를 매칭시키기위해 객체를 사용했다.

for문을 이용해서 result[i] = i + count 형태로 객체에 삽입을 시켜줄 것이다.

3의 배수이거나 3이 포함되면 count 증가시켜줄 것이다.

근데 여기서 저 두 조건에 해당되지 않는 숫자여야하므로 조건에 해당되지 않는 숫자를 만날 때 까지 while문을 돌려준다.

그럼 이제 마지막에는 result 객체에서 n의 키 값을 반환해주면 끝 !