자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
| n | result | 
|---|---|
| 45 | 7 | 
| 125 | 229 | 
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 | 
|---|---|---|---|
| 45 | 1200 | 0021 | 7 | 
| 125 | 11122 | 22111 | 229 | 
import java.util.*;
class Solution {
    public int solution(int n) {
        StringBuffer sb = new StringBuffer();
        
        // 10진법 -> 3진법
        String three = Integer.toString(n, 3);
        
        // 앞 뒤 반전
        for(int i = three.length() - 1; i > -1; i--) {
            sb.append(three.charAt(i));
        }
        
        // 3진법 -> 10진법
        int ten = Integer.parseInt(sb.toString(), 3);
        return ten;
    }
}
원래 처음에는 앞 뒤 반전 부분을 while 문을 사용해서 풀었는데 런타임 에러가 나길래 StringBuffer랑 charAt()을 사용해서 풀었다.
class Solution {
    public int solution(int n) {
        String a = "";
        
        // 10진법 -> 3진법
        while(n > 0){
            a = (n % 3) + a;
            n /= 3;
        }
        
        // 앞 뒤 반전
        a = new StringBuilder(a).reverse().toString();
        
        // 3진법 -> 10진법
        return Integer.parseInt(a,3);
    }
}
while을 10진법을 3진법으로 전환할 때 사용했고, 앞 뒤 반전은 StringBuilder의 reverse() 메소드를 사용해서 쉽게 반전한 코드이다.