728x90
코드 힌트
- 3진법과의 차이점
- 124 나라의 숫자는 일반적인 3진법과 다르게 0 대신 4를 사용합니다.
- 따라서, 나머지가 0일 때 몫에서 1을 빼는 것이 중요합니다. 이를 통해 1, 2, 4 세 숫자만 사용됩니다.
- StringBuilder 활용
- 숫자를 계산한 후 바로 문자열에 추가하지만, 추가되는 순서는 뒤집힌 상태이기 때문에 마지막에 reverse()로 순서를 반전해야 합니다.
- 몫과 나머지의 조정
- 나머지가 0인 경우, 몫에서 1을 빼는 이유는 4를 0처럼 처리하기 위해서입니다.
- 예를 들어, n = 3인 경우 '4'가 나와야 하는데, 이때 몫에서 1을 빼서 올바른 계산이 됩니다.
- 예시
- n = 1 → "1"
- n = 2 → "2"
- n = 3 → "4"
- n = 4 → "11"
- 이 문제의 핵심
- 3진법을 변형하여 1, 2, 4만 사용하기 때문에 나머지 연산과 몫 조정이 핵심입니다.
- 이와 같은 반복을 통해 주어진 숫자를 124 나라의 숫자로 변환합니다.
정답은 더보기 클릭
더보기
class Solution {
public String solution(int n) {
StringBuilder sb = new StringBuilder(); // 결과 문자열을 저장할 StringBuilder
// n이 0이 될 때까지 반복
while (n > 0) {
int num = n % 3; // n을 3으로 나눈 나머지를 구함
// 나머지가 0일 경우
if (num == 0) {
sb.append("4"); // 124나라에서는 나머지 0 대신 '4'를 사용
n = n / 3 - 1; // 몫에서 1을 빼서 다음 연산에 반영
} else {
sb.append(num); // 나머지가 1 또는 2일 경우 그대로 추가
n /= 3; // n을 3으로 나눈 몫으로 업데이트
}
}
return sb.reverse().toString(); // 문자열을 역순으로 반환
}
}
728x90
'프로그래머스(Java) > Level 2' 카테고리의 다른 글
[프로그래머스] 전력망을 둘로 나누기 (0) | 2024.10.11 |
---|---|
[프로그래머스] [PCCP 기출문제] 3번 / 충돌위험 찾기 (1) | 2024.10.09 |
[프로그래머스] 호텔 대실 (1) | 2024.10.05 |
[프로그래머스] 시소 짝꿍 (0) | 2024.10.03 |
[프로그래머스] 마법의 엘리베이터 (2) | 2024.10.02 |