저주의 숫자 3

·2023년 1월 12일
0
post-thumbnail

3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.

10진법3x 마을에서 쓰는 숫자10진법3x 마을에서 쓰는 숫자
1168
22710
34811
45914
571016

정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ n ≤ 100

입출력 예

nresult
1525
4076

입출력 예 설명

입출력 예 #1

15를 3x 마을의 숫자로 변환하면 25입니다.
입출력 예 #2

40을 3x 마을의 숫자로 변환하면 76입니다.

나의 풀이

function solution(n) {
    let noThree = Array(n*2).fill()
                            .map((v,i) => i+1)
                            .filter(v => v % 3 !== 0 && !(v+('')).includes('3'))
    return noThree[n-1]
}

숫자를 증가시켜 가며 n번 반복할 방법이 생각나질 않아서 애초에 1씩 증가하는 숫자를 담은 배열을 만든 뒤, 조건에 맞지 않는 값을 필터해 주었다.

참고할 풀이

function solution(n) {
    let arr = [];
    let num = 0;
    while (arr.length !== n && ++num) {
        if (num%3!==0 && !(''+num).includes('3'))
            arr.push(num)
    };
    return arr.pop();
}

특이한 점이라면 값 증가를 while문 조건에서 해 주었다. while문 조건에 쓰는 대신 if 앞부분에 num++이라고 적어 주어도 동일하게 작동한다. 값을 배열에 넣어 준 다음, 값의 길이가 n이 될 때까지 반복해 주었다. 그리고 배열의 마지막 값을 추출해 3x 숫자를 추출해 주었다.

profile
전 이것도 몰라요

0개의 댓글