[자바코딩] parseInt 진수변환

gnoesnooj·2021년 11월 7일
0

10진수 -> 3진수로 바꿔준 후, 해당 3진수를 뒤집은 다음 10진수로 바꿔주는 문제를 풀었다.

예를 들어 11은 3진수로 바꾸면 102, 뒤집으면 201, 다시 10진수로 바꿔주면 19가 된다.

나의 풀이

public int solution(int n) {
        int num =0;
        for(int i=0;;i++){
            if(Math.pow(3,i) <= n && n< Math.pow(3,i+1)){
                num=i;
                break;
            }
        }
        int [] arr3digit = new int [num+1];
        for(int i=num; i>=0; i--){
            double tmp = Math.pow(3,i);
            arr3digit[i] = n / (int)tmp;
            n = n % (int)tmp;
        }
        int answer = 0;
        int x=0;
        for(int i=arr3digit.length-1; i>=0;i--){
        	
            double tmp = Math.pow(3,i) * arr3digit[x];
            x++;
            answer = answer + (int)tmp;
        }
        return answer;
    }

Math.pow 와 배열을 통해서 문제를 해결했다.

다른 사람의 풀이

class Solution {
    public int solution(int n) {
        String a = "";

        while(n > 0){
            a = (n % 3) + a;//a+(n%3)
            n /= 3;
        }
        a = new StringBuilder(a).reverse().toString();

        return Integer.parseInt(a,3);
    }
}

parseInt(x, n)을 사용할 경우, x를 n진법으로 바꿔준 후 리턴해준다는 것을 알게 되었다.

profile
누구나 믿을 수 있는 개발자가 되자 !

0개의 댓글