[프로그래머스] 124 나라의 숫자

김지원·2022년 1월 29일
0

coding-test

목록 보기
12/25
post-thumbnail

📖 문제링크

https://programmers.co.kr/learn/courses/30/lessons/12899

문제 설명

문제의 내용은 이렇다.

124 나라에는 자연수만 존재한다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용한다.
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return하여라

📃 조건

  • n은 500,000,000이하의 자연수다.

👨‍💻 문제풀이

필자가 푼 문제풀이


function solution(n) {
    let countryNum = '';
    
    while (n > 0) {
        let divN = `${parseInt(n % 3)}`;
        n = parseInt(n / 3);
        if(divN === '0') {
            n -= 1;
            divN = '4';
        }
        
        countryNum = divN + countryNum;
    }
    return countryNum;
}

생각보다 쉬운 문제였다.
일단 규칙을 찾아야 했다.

1 -> 1 6 -> 14
2 -> 2 7 -> 21
3 -> 4 8 -> 22
4 -> 11 9 -> 24
5 -> 12 10 -> 41

1,2,3만 보면 2로 나타낼 수 없는 숫자는 4로 치환되며
4를 보면 11로 4 / 3 = 1 이기 때문에 1이 되고 나머지가 붙는 것으로 유추가 되었다.

그래서 N을 3으로 나눈 후 나머지가 0이라면 숫자를 4로 치환하였고 아니라면 나머지를 계속 붙여주었다.

오른쪽으로 계속 삽입하기 위해 문자열로 진행하였고 n이 0이 될 때까지 진행하였다.

🧐 다른 사람들의 코드

function change124(n) {
  return n === 0 ? '' : change124(parseInt((n - 1) / 3)) + [1, 2, 4][(n - 1) % 3];
}

이 분은 배열을 이용하여 나머지를 보고 비교하는걸 더해줬다... 정말 respect...😨

2022.01.29

profile
backend-developer

0개의 댓글