알고리즘/프로그래머스 Level2

[프로그래머스,자바] Level2: 124 나라의 숫자

류창 2021. 9. 25. 19:20
반응형

문제분석

 124 나라는 1,2,4 로만 사용하여 수를셉니다.

 

우리가 일상생활에서 쓰는 10진법은 숫자 0~9인 숫자 10개를사용하여 수를 나타내니 '10진법'입니다.

 

124나라는 1,2,4인 숫자 3개로만 사용하여 수를 나타내니, '3진법'과 같은원리로 움직입니다.

 

근데, 보통 3진법은 0부터세는데, 이 문제는 1부터셉니다.

그냥 3진법을 갖다 붙히면 오류가 발생합니다.

 

예시로, 6 : 14 , 9: 24 를 실행하면, 6=42 9=44 로 출력이됩니다.

4,5,7,8,같은 숫자들은 의도대로 잘나오지만, 3의배수만 의도대로 나오지않습니다.  

 

이 문제를 해결하기위해선, 3의배수를 확인한뒤, -1를 하면 문제의 의도대로 출력이가능합니다.

 

문제풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
    public String solution(int n) {
        String answer = "";
        String[] rules ={"4","1","2"};
        while(n!=0){
            
            answer=rules[n%3]+answer;
            if(n%3==0){
                n--;
            }
            n/=3;
        }
        return answer;
    }
}
cs

 

숫자가 1일때 : 1

숫자가 2일때 : 2

숫자가 3일때 : 4

 

3진법의 로직을 적용하면 n%3을한 나머지를 출력합니다.

나머지가 1이면 1, 나머지가 2면 2, 나머지가 0이면 4가 출력되니,

배열 rules["4","1","2"]로 설정한뒤, 3의배수라면, 출력한뒤 -1를 합니다.

반응형