124 나라의 숫자 : https://school.programmers.co.kr/learn/courses/30/lessons/12899
주어진 n을 1,2,4로만 표현해야한다.
1은 1, 2는 2, 3은 4로 표현가능하기 때문에 3진법과 비슷해보였다.
1%3 = 1, 2%3 = 2, 3%3 = 0이 되기 때문에 배열을 생성해서 {4, 1, 2}로 정의한다.
숫자를 3으로 나누었을 때의 나머지의 패턴이 있었다.
위 조건을 n==0이 될때까지 반복해준다.
예를 들어 27은 124나라의 수로 변경하면 224이다.
n = 27일때
n = 8
n = 2
n = 0
결과는 넣은 순서를 reverse하여 224가 나오게된다.
public class 나라의숫자124 {
public static void main(String[] args) {
int n = 27;
System.out.println(solution(n));
}
static String solution(int n){
int[] arr = {4,1,2};
StringBuilder sb = new StringBuilder();
//몫이 0이게 되면 중지
while(n!=0){
//몫의 몫 (처음에는 n의 몫)
int value = n/3;
//몫의 나머지 (처음에는 n의 나머지)
int rest = n%3;
//만약 나머지가 0이게 되면 몫에서 1를 감소시킨다.
if(rest == 0) value--;
//나머지 값을 124진법으로 바꾸어 저장.
sb.append(arr[rest]);
//몫을 갱신한다.
n = value;
}
return sb.reverse().toString();
}
}
접근방법과 풀이방법을 잘 기억해두었다가 잘 응용해보자.