3진법 뒤집기 (자바)

김재현·2024년 4월 23일
0

알고리즘 풀이

목록 보기
77/90
post-thumbnail

문제

정답 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String tr = "";
        
        while(n>=3) {
            tr+=n%3;
            n/=3;
        }
        tr+=n;
        
        for(int i=0;i<tr.length();i++) {
            answer+=(tr.charAt(tr.length()-i-1)-'0') * Math.pow(3,i);
        }
        
        return answer;
    }
}

10진법을 3진법으로 바꾸는 것은 학창시절 배운 것을 응용하여 구할 수 있었다.
나머지가 각각의 자리수가 되는것..!
그것을 뒤집어 놓으면 되니 tr로 선언해놓은 문자열의 뒤쪽으로 더하기만 하면 되었다.
주의 할 점은 나머지만 더하는게 아니라 마지막에 남은 n을 더해줘야한다는 것!

그리고 3진법을 다시 10진법으로 바꿔줬다.

다른 사람 풀이

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

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


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

아니 근데 난 이렇게 고생해서 풀었는데 이분은 Integer.parsInt(a,b)를 사용해서 b진법인 a를 간단하게 10진법으로 바꿔버린것이다!

그리고 while문의 조건을 n > 0으로 했다면 나처럼 마지막에 n을 더해줄 일이 없었겠다.

profile
I live in Seoul, Korea, Handsome

0개의 댓글