GitHub 자세히보기

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;
    }
}

 

 

마치며

주어진 조건을 활용하여 그대로 코드를 짜다 보니 조건에 따른 코드 구현을 할 수 밖에 없었다.
하지만 배열의 순서를 변경하는 것만으로도 불필요한 조건을 없앨 수 있었고 이로 인해 코드를 간결하게 줄일 수 있었다. 
사고를 말랑말랑하게 연습을 해야겠다!