본문 바로가기
코딩 테스트/알고리즘(Java)

[프로그래머스/Lv.1] 3진법 뒤집기

by KeepCoding 2025. 1. 16.

<문제>

 

 

<코드>

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String three = "";
        
        // 10진법 n을 3진법으로 바꾼다.
        // 뒤집은 3진법 숫자를 원하니 three 뒤에 n % 3의 결과를 이어 붙여서 뒤집는 과정을 생략한다.
        while(n != 0)
        {
            three += n % 3;
            n /= 3;
        }
        
        // 매번 three.length()을 호출하지 않고 한번만 호출해 length 변수에 담아둔다.
        int length = three.length();
        
        // 예를 들어 뒤집은 숫자가 121이라고 하면
        // (1 * 3^2) + (2 * 3^1) + (1 * 3^0) = 16 이 나온다.
        // three의 첫 번째 숫자부터 순회하면서 3의 (length - 1 - i)승을 곱해준 결과를 더해준다.
        for (int i = 0; i < length; i++) {
            answer += Integer.parseInt(String.valueOf(three.charAt(i)))
            * Math.pow(3, length - 1 - i);
        }
        
        return answer;
    }
}

 

반응형