본문 바로가기

프로그래머스(Java)/Level 2

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

728x90

코드 힌트

  1. 3진법과의 차이점
    • 124 나라의 숫자는 일반적인 3진법과 다르게 0 대신 4를 사용합니다.
    • 따라서, 나머지가 0일 때 몫에서 1을 빼는 것이 중요합니다. 이를 통해 1, 2, 4 세 숫자만 사용됩니다.
  2. StringBuilder 활용
    • 숫자를 계산한 후 바로 문자열에 추가하지만, 추가되는 순서는 뒤집힌 상태이기 때문에 마지막에 reverse()로 순서를 반전해야 합니다.
  3. 몫과 나머지의 조정
    • 나머지가 0인 경우, 몫에서 1을 빼는 이유는 4를 0처럼 처리하기 위해서입니다.
    • 예를 들어, n = 3인 경우 '4'가 나와야 하는데, 이때 몫에서 1을 빼서 올바른 계산이 됩니다.
  4. 예시
    • n = 1 → "1"
    • n = 2 → "2"
    • n = 3 → "4"
    • n = 4 → "11"
  5. 이 문제의 핵심
    • 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