Lv.1[3진법 뒤집기]

문제

문제링크

코드

class Solution {
    public String third(int n){
        String str = "";
        while(n>0){
            str = n%3 + str;
            n /=3;
        }
        return str;
    }
    public int ten(String str){
        int len = str.length()-1;
        int sum = 0;
        for(int i=0; i<str.length(); i++){
            //해당 자릿수의 제곱수와 해당 자릿수 값과 곱하기
            sum += ((int)Math.pow(3,len--)) * (str.charAt(i)-'0');
        }
        return sum;
    }
    public int solution(int n) {
        int answer = 0;
        StringBuilder  sb = new StringBuilder();
        sb.append(third(n)); // 3진법 변환 후 StringBuilder에 저장
        String str = sb.reverse().toString(); // StringBuilder의 함수로 뒤집기
        answer = ten(str); // 뒤집은 3진접을 10진법으로 변환
        return answer;
    }
}

알고 넘어가기

3진법을 10진법으로 다시 변환할 때 함수를 만들어서 그안에서 실행하도록 구현했다.
다른 사람의 풀이도 봤는데 더 간단한 풀이가 있었다.
Integer.parseInt(str,3); 이런식으로 String값을 주고 다음 매개변수 변환하고 싶은 진법을 주면 된다.
만약 8진법이였다면 Integer.parseInt(str,8); 이런식으로 주면 된다.

좋은 웹페이지 즐겨찾기