😓저주의 숫자 3

문제 설명

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 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 100


입출력 예

nresult

15

25

40

76


입출력 예 설명

입출력 예 #1

  • 15를 3x 마을의 숫자로 변환하면 25입니다.

입출력 예 #2

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

코드

이 문제는 도저히 숫자의 규칙을 모르겠어서 다른 사람들의 풀이를 찾아보았다.

다른 풀이

function solution(n) {
    let answer = 0;

    const checkNumber = (k)=>{
        const numbers = String(k).split("")
        if(k%3===0|| numbers.includes("3")){
            answer++
            checkNumber(answer)
    	} else {
        return
    	}
    }
    for(let i = 0; i<n; i++){
        answer++
        checkNumber(answer)
    }
    return answer
}

문제에서 3x 나라는 3의 배수와 3이 들어간 숫자는 사용하지 않는다고 했다.

(1) 0부터 n까지 반복문을 돌면서 값을 1씩 추가해준다.

(2) 1을 추가한 값이 3의 배수인지, 3을 포함하는지 판단한다.

그래서 만약 3의 배수이거나 3이 포함되면 answer는 하나 더 늘어나게 되고, 1이 더해진 값에 대하여 한번 더 check 하는 함수를 실행한다. 아무 조건에 걸리지 않으면 그대로 리턴하고 함수를 종료한다.

참고

https://selfdevelopcampus.tistory.com/entry/javascript-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A0%80%EC%A3%BC%EC%9D%98-%EC%88%AB%EC%9E%90-3

Last updated