코딩테스트

[프로그래머스] 삼진법 뒤집기 자바

mhui123 2025. 4. 4. 22:32
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제

주어진 n을 삼진수로 만든 후 뒤집어서 다시 십진수로 변환한 값을 구하여라.

접근

n % 3 값들을 차례대로 String으로 붙이면 뒤집어진 삼진수가 된다.

이를 다시 십진수로 바꾸려면 각 자리수 값 * 3^제곱하여 변환한다.

 

public static int solution(int n) {

        if(n == 0) return 0;

        StringBuilder reversedTernary = new StringBuilder();
        int answer = 0;
        while(n > 0){
            int remain = n % 3;
//            ternary.insert(0, remain); //0번 위치에 삽입
            reversedTernary.append(remain);
            n /= 3;
        }
        
        for(int i = reversedTernary.length() -1; i >= 0; i--){
            int d = Character.getNumericValue(reversedTernary.charAt(i));
            int p = reversedTernary.length() -1 - i;
            answer += (int) (d * Math.pow(3, p));
        }


        return answer;
    }

알게된 것

1. StringBuilder s.insert(index, 값) : index위치에 값 삽입
2. Character.getNumericValue(char) : char to int
3. 십진수 -> 삼진수 : n % 3 한 값들의 연속. while(n > 0)
4. 삼진수 -> 십진수 : 각 자리수 값 * 3 ^ 자리위치 
5. Math.pow(x, v) : x의 v승
반응형