반응형

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

** Javascript

 

3진법이라는 알았는데 for문으로 접근했다가 시간을 너무 오래 잡아먹었다.

 

결국 구글링해서 답을 알아냈는데 생각보다 더 간단했다.

 

while 을 사용하면 이렇고

 

function solution(n) {
    const availableNumber = [ 4, 1, 2 ];
    let answer = '';
    while (n) {
        answer = availableNumber[n % 3] + answer;
        n = n % 3 ? Math.floor(n / 3) : n / 3 - 1;
    }
    return answer;
}

 

 

더 줄이면 이렇게 된다.

 

추천 가장 많이 받은 식인데 재귀함수 방법을 썼다.

n===0 조건 부분을 편집해서 길이를 더 줄여봤다.

 

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

 

 

 

(2022-04-28 추가)

** Python

 

def solution(n):
    answer = ''
    일이사 = '124'
    if n < 1: return answer
    while(n) :
        n -= 1
        answer = 일이사[(n) % 3] + answer
        n = n // 3
    return answer;
반응형

+ Recent posts