프로그래머스

[프로그래머스_Level2] 124 나라의 숫자

빙수빈수 2021. 7. 29. 14:30

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

[문제]

 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

 

  1. 124 나라에는 자연수만 존재합니다.
  2. 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 함수를 완성해 주세요.

 

[제한 조건]

n은 500,000,000이하의 자연수 입니다.

 

[고찰]

class Solution {
   public String solution(int n) {
		public String solution(int n) {
		String[] number= {"4","1","2"};
        String answer = "";
        int num=n;
        
        while(num>0) {
        	int remain=num%3;
        	num/=3;
        	
        	/*
        	 * 기존 3진법의 경우 3의 배수일 경우 자리수가 증가하지만
        	 * 해당 문제는 4도 일의 자리에 올 수 있기 때문에
        	 * 3의 배수일 경우 -1을 해주어야 한다.
        	 */
        	if(remain==0)
        		num--;
        	
        	// 연산의 결과는 뒷쪽부터 붙여나간다.
        	answer=number[remain]+answer;
        }
        return answer;
    }
}

 

[고찰]

 풀이를 보면 어렵지 않은 문제였지만 해결 방법이 잘 떠오르지 않아 다른 사람의 해답을 참고했다. 3과 나눈 나머지를 뒷쪽부터 붙여나가는 알고리즘은 쉽게 이해할 수 있었지만 3과 나눠 떨어지면 왜 -1을 해줘야 하는지 이해하는데 시간이 좀 걸렸다. 좀 더 고민해볼껄 하는 아쉬움이 들었다.