알고리즘-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개의 댓글

관련 채용 정보