반응형
문제분석
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를 합니다.
반응형
'알고리즘 > 프로그래머스 Level2' 카테고리의 다른 글
[프로그래머스,자바] Level2: 더 맵게 (0) | 2021.09.27 |
---|---|
[프로그래머스,자바] Level2: 기능개발 (0) | 2021.09.25 |
[프로그래머스,자바] Level2: 빛의 경로 사이클 (0) | 2021.09.25 |
[프로그래머스,자바] Level2:멀쩡한 사각형 (0) | 2021.09.23 |
[프로그래머스,자바] Level2:오픈채팅방 (0) | 2021.09.22 |