알고리즘-2021/05/11

sanghun Lee·2021년 5월 11일
0

알고리즘

목록 보기
44/52
post-thumbnail

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

문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

10진법 124 나라 10진법 124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

제한사항

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

입출력 예

n	result
1	1
2	2
3	4
4	11

풀이 1

function solution(n) {
    //4 = 3*1 +1 => 11
  	//6 = 3*2 + 0 => 14
    //10 = 3*3 +1 => 41

    let answer = '';

    while(n > 0){
        //rest only can be 1,2,0
        let arr = [4,1,2]
        let rest = (n%3);

        n = Math.floor(n/3);
        //chage n when rest 0
      if(rest === 0){
           n -= 1;
      }
        answer = arr[rest] + answer;
    }
        return answer;
}

풀이 2

function solution(n) {
    //4 = 3*1 +1 => 11
    //10 = 3*3 +1 => 41
    
    let answer = '';

    
    while(n > 0){
        //rest only can be 1,2,0
        let arr = [4,1,2]
        let rest = (n%3);
        
        n = Math.floor((n - 1) / 3);
        //chage n when rest 0

        answer = arr[rest] + answer;
}
    return answer;
}

레벨 2로 들어오고 나서 자료구조나 수학적 상식이 없으면 풀기 힘든문제들이 많은 것 같다.
이 문제 하나에 왜이렇게 해맷는지 모르겠다..

다른 분들 보니 애초에 n과 n-1로처리했을때의 차이가 없다는 것을 인식하고 n-1로 모든 처리를 하여 더욱 쉬운 방식으로 해결했다.

처음에는 rest === 0 인 경우 n -=1 을 해줘야한다는 것을생각하지 않아 조금 해맸는것이 .. 안타깝다 🥺.. 결국 나머지가 0이 나온 뒤 하나의 수를 빼고 다시 실행을 하면 그 다음에 해당하는 케이스가 나오게 되는 것인데 ㅎㅎ... 그대로 진행하면 다음 수로 진행하지 않고 계속 나누기만 실행하여 다른 결과가 나오게 된다.

끝!

참고

profile
알고리즘 풀이를 담은 블로그입니다.

0개의 댓글