Bleeding edge

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

코딩테스트 공부

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

codevil 2022. 4. 19. 13:19

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

 

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

 

programmers.co.kr

 

2단계의 앞부분에 위치하고 있어서 여러번 시도하고 여러번 실패한 문제. 다른분의 풀이를 보니 다른분의 풀이를 보는게 더 나은거 같다. 

 

function solution(n) {
    let answer = []
   n = n.toString('3');
   n = n.split('');
   while(n.length!==0){
       if(n[n.length-1]!=='0'){
        answer.push(n[n.length-1])
        n.pop();
       }else if(n[n.length-1]==='0'){
        answer.push('4')
       n.pop();
           for(let i=n.length-1;i>=0;i--){
               if(n[i]==='0'){
                   n[i] = '2'  
               }else if(n[i]==='2'){
                   n[i] ='1'
                   break;
               }else if(n[i]==='1'){
                   n[i]='0'
                   break;
               }
            }
           
       }
        if(n[0]==='0'){
            n.shift()
        }
    
   }
    answer = answer.reverse().join('')
    return answer
}

음.. 내풀이의 요약은 3진법으로 바꾸고, 숫자를 하나씩 pop시키고 list에 모은다. pop시킬때 만일 pop 시킨 숫자가 0이라면 4를 대신에 넣고, 앞에있는 숫자에서 1을뺀다, 이때, 뺀 숫자가 0이라면 그 앞의 숫자에 1을 뺀다. 만일 0이 아니라면 break. 하고 리버스 시키고 join 시켰다. 다음번에 풀때는 다른사람의 풀이처럼 풀어봐야겠다