Algorithm/Programmers
[Programmers] 124 나라의 숫자 for JAVA
devdange
2022. 3. 17. 01:22
문제 바로가기
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
문제풀이
1. 처음 풀이
124로만 숫자를 나타낼 수 있다는 점에서 124나라는 3진수를 사용한다는 것을 알 수 있다.
다만, 3진수가 012가 아닌 124로 이루어져 있다.
구현
1. country 배열에 숫자 0, 1, 2, 4로 초기화한다.
2. n > 0 인 경우, 반복
2-1. n을 3으로 나눈 나머지가 0이면, 결과에 4를 붙이고 n은 3으로 나눈 후 1을 뺌
2-2. 나머지가 0이 아니면, 결과에 country 배열의 나머지번째를 붙이고 n은 3으로 나눔
3. 결과 출력
class Solution {
public String solution(int n) {
String answer = "";
int[] country = { 0, 1, 2, 4 };
while (n > 0) {
if(n % 3 == 0) {
answer = Integer.toString(country[3]).concat(answer);
n = n / 3 - 1;
} else {
answer = Integer.toString(country[n % 3]).concat(answer);
n /= 3;
}
}
return answer;
}
}
2. 배열의 순서를 변경하여 조건을 줄인 풀이
구현
1. country 배열에 숫자 4, 1, 2로 초기화한다.
2. n > 0 인 경우, 반복
2-1. 결과에 country 배열의 나머지번째를 붙임
2-2. n은 n-1 을 3으로 나눈 값으로 변경한다.
class Solution {
public String solution(int n) {
String answer = "";
int[] country = { 4, 1, 2 };
while (n > 0) {
answer = Integer.toString(country[n % 3]).concat(answer);
n = (n-1) / 3;
}
return answer;
}
}
마치며
주어진 조건을 활용하여 그대로 코드를 짜다 보니 조건에 따른 코드 구현을 할 수 밖에 없었다.
하지만 배열의 순서를 변경하는 것만으로도 불필요한 조건을 없앨 수 있었고 이로 인해 코드를 간결하게 줄일 수 있었다.
사고를 말랑말랑하게 연습을 해야겠다!