문제
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
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 함수를 완성해 주세요.
구현방법
- 표를 보면 뒷자리는 1 2 4 1 2 4 로 계속 반복되는 것을 볼 수 있다.
- 앞자리는 1 2 4 가 지나면 앞에 1이 붙고 다음 순환에서 2가 붙고 다음 순환에서 또 4가 되는 것을 확인할 수 있다.
- 그래서 10 진법 숫자를 3으로 나누고 나머지 값을 하나하나 넣어주는 방법을 이용했다.
- 예시로 4같은 경우 3으로 나누면 몫은 1이고 나머지는 1이다. 그러므로 배열 {4, 1, 2} 순서로 넣고 1번째 인덱스인 1과 대응되어 가장 오른쪽 값은 1이 된다. 즉 이 방법을 실행했을 때 4는 "?1" 인 상태가 된다. ? 가 무엇인지 알기 위해서는 몫을 알아야한다. 4를 3으로 나누었을 때 몫이 1이므로 또 1번째 인덱스인 1을 ?에 추가해준다. 그리고 다음 반복은 1을 3으로 나누는 것으로 한다. 만약 몫이 0일 경우부터는 더이상의 반복은 안해도 된다.
정답 코드
class Solution {
public String solution(int n) {
String[] numbers = {"4", "1","2"};
String answer = "";
int num = n;
while(num>0){
int b = num%3;
num /=3;
if(b ==0){
num--;
}
answer = numbers[b] + answer;
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
백준 1417번-국회의원 선거(JAVA) (0) | 2022.11.03 |
---|---|
백준 1051번 문제 : 숫자 정사각형(JAVA) (0) | 2022.11.03 |
프로그래머스 - 2xn 타일링(JAVA) (0) | 2022.09.19 |
프로그래머스 - 올바른 괄호(JAVA) (1) | 2022.09.12 |
프로그래머스 - 숫자의 표현(JAVA) (0) | 2022.09.11 |