IT/Algorithm

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

프티 2021. 10. 29. 01:23
반응형

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

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

나의 풀이

function solution(n) {
    const answer = [];
    
    while (n > 3) {
        if (!(n % 3)) {
            n = parseInt(n / 3) - 1;
            answer.push(4);
            continue;
        }
        
        answer.push(n % 3);
        n = parseInt(n / 3);
    }
    
    answer.push(n === 3 ? 4 : n);
    
    return answer.reverse().join("");
}

재귀함수를 사용하고 싶었는데 도저히 짤 수가 없었다..

 

문제 규칙상 124만 사용할 수 있지만 3진법으로 변환하였다.

3으로 나누어 떨어지는 경우 나머지를 3으로 만들고 몫을 구하였고 3 또는 1이 남을 때까지 나누었다.

 

그 후에 나머지 3은 4로 변환,

나머지는 그대로 answer배열에 push한 뒤에 순서가 뒤집혔으므로 reverse하였고 join으로 문자열로 변환하여 반환했다.

 

다른 사람의 풀이

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

원리는 비슷하지만 재귀 함수를 이렇게 멋있게 사용하셨다.

 

다음엔 의도적으로라도 쓰고야말겠다..

반응형