728x90
반응형
SMALL
문제 설명
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 함수를 완성해 주세요.
제한사항
- n은 50,000,000이하의 자연수 입니다.
입출력 예
n result
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
package LV2;
public class H12899 {
public String solution(int n) {
// 1, 2, 4를 각각 인덱스 1, 2, 0에 위치시킨 배열
String[] numbers = { "4", "1", "2" };
// 변환 결과를 저장할 문자열
String answer = "";
// n이 0이 될 때까지 반복
while (n > 0) {
// n을 3으로 나눈 나머지를 구함
int remainder = n % 3;
// n을 3으로 나눔
n /= 3;
// 나머지가 0인 경우, 즉 n이 3의 배수인 경우 n에서 1을 뺌
if (remainder == 0) n--;
// 나머지에 해당하는 숫자를 answer 문자열의 앞에 붙임
answer = numbers[remainder] + answer;
}
return answer;
}
}
3진법 변환과 유사하나, 각 자리가 0부터 시작하는 것이 아닌 1부터 시작하고, 숫자 3 대신에 숫자 4를 사용하는 것이 특징이다. 따라서 숫자 n을 3으로 나눈 나머지와 몫을 사용하여 문제를 풀 수 있다. 그러나 n이 3의 배수일 때에는 몫에서 1을 빼고 나머지를 4로 바꿔줘야 한다.
numbers 배열을 만들어 1, 2, 4를 각각 인덱스 1, 2, 0에 위치시킵니다. 이후 주어진 숫자 n에 대해 while 루프를 돌며 3으로 나눈 나머지를 구하고, n을 3으로 나눈다. 나머지가 0인 경우, 즉 n이 3의 배수인 경우에는 n에서 1을 빼준다. 이후 나머지에 해당하는 숫자를 answer 문자열의 앞에 붙여준다. 이 과정을 n이 0이 될 때까지 반복한다.
728x90
반응형
LIST
'알고리즘 > 프로그래머스 JAVA LV.2' 카테고리의 다른 글
연속된 부분 수열의 합 (0) | 2023.06.15 |
---|---|
택배상자 (0) | 2023.06.15 |
큰 수 만들기 (0) | 2023.06.14 |
소수 찾기 (0) | 2023.06.14 |
롤케이크 자르기 (0) | 2023.06.12 |