알고리즘

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

쿠키담임선생님 2022. 9. 18. 22:54

문제


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 함수를 완성해 주세요.


구현방법


  • 표를 보면 뒷자리는 1 2 4 1 2 4 로 계속 반복되는 것을 볼 수 있다.
  • 앞자리는 1 2 4 가 지나면 앞에 1이 붙고 다음 순환에서 2가 붙고 다음 순환에서 또 4가 되는 것을 확인할 수 있다.
  • 그래서 10 진법 숫자를 3으로 나누고 나머지 값을 하나하나 넣어주는 방법을 이용했다.
  • 예시로 4같은 경우 3으로 나누면 몫은 1이고 나머지는 1이다. 그러므로 배열 {4, 1, 2} 순서로 넣고 1번째 인덱스인 1과 대응되어 가장 오른쪽 값은 1이 된다. 즉 이 방법을 실행했을 때 4는 "?1" 인 상태가 된다. ? 가 무엇인지 알기 위해서는 몫을 알아야한다. 4를 3으로 나누었을 때 몫이 1이므로 또 1번째 인덱스인 1을 ?에 추가해준다. 그리고 다음 반복은 1을 3으로 나누는 것으로 한다. 만약 몫이 0일 경우부터는 더이상의 반복은 안해도 된다.
  •  

정답 코드

class Solution {
    public String solution(int n) {
        String[] numbers = {"4", "1","2"};
        String answer = "";
        int num = n;
        while(num>0){

            int b = num%3;
            num /=3;
            if(b ==0){
                num--;
            }
            answer = numbers[b] + answer;

        }
        return answer;
    }
}