오류, 기능, 문제해결(JAVA)

프로그래머스 3진법 뒤집기 / Integer.parseInt(String s, int radix)

seungmin576 2025. 1. 16. 10:03

package programmers.level2;

public class Ternary {
        public int solution(int n) {
            int answer = 0;
            long mok = 0;
            long namuji = 0;
            long ternary = 0;
            long ten = 1;

            for(int i = 3; i <= n;){	//3진법으로 변환하는 코드
                namuji += n % i * ten;
                mok = n /= i;
                mok *= ten;
                ten = ten * 10;
            }
            mok *= 10;
            ternary = mok + namuji;	//여기까지하면 입력된 숫자 n은 3진법이됨.

            long[] t = new long[String.valueOf(ternary).length()];	//여기부터는 3진법을 거꾸로 뒤집는 과정
            int i = 0;
            while(ternary > 0){
                t[i] = ternary % 10;
                ternary /= 10;
                i++;
            }	//여기까지하면 3진법의 숫자가 뒤집어짐

            for (int j = 0; j < t.length; j++) { //여기서는 3진법을 다시 10진법으로 바꾸는 과정
                answer += (int) (t[j] * Math.pow(3, t.length - (j + 1)));
            }	

            return answer;
        }

    public static void main(String[] args) {
        Ternary t = new Ternary();
        System.out.println(t.solution(100000000));
    }
}

난 개어렵게 풀었는데 풀고나서 뿌듯함에 다른사람 답을 보니 Integer.parseInt에 진법 관련 기능이 있었다...

int binary = Integer.parseInt("1101", 2);

이렇게 하면 1101이라는 2진수를 10진법으로 결과를 도출해 주는 것이다.

다음에 써먹어야 겠다.