ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

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

SZCODE 2020. 6. 18. 15:26

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

 

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

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

programmers.co.kr

목표 : 1,2,4 로 모든 수 표현하기

3진법을 사용해서
1%3 = 1 , 2%3 = 2, 3%3 = 0 인데 나머지가 0이면 4로 바꿔준다. (124 나라 수로 표현하기 위해)
배열의 인덱스를 이용해서 4,1,2 로 저장

6은 124나라에서 14이다.
6을 3으로 나눈 나머지가 0, 3으로 나눈 몫은 2
                     0을 4로 변경, 몫 -1 ----------------------->4
몫-1인 1을 3으로 나눈 나머지 1, 몫은 0 종료. ------------->1
 
n이 0이 될 때까지 반복
 n을 3으로 나눈 나머지를 변수에 저장
 n을 3으로 나눈 몫을 다시 n으로 갱신
 n을 3으로 나눈 나머지가 0 일 경우 n-1 을 해서 다시 3으로 나누어준다.
 그렇지 않을 경우 인덱스를 사용해 나머지 연산 결과를 뒤쪽에 계속 붙여나갈 수 있도록 한다.
 
public class Solution {
	public  String solution(int n) {
		String answer = "";
		int[] arr = { 4, 1, 2 };
		
		while(n>0) {
			int nmg = n % 3;
			n = n/3;
			if(nmg == 0) n--;
			
			answer = arr[nmg] + answer;
		}
		
		return answer;
	}


}