
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
| n | result | 
|---|---|
| 45 | 7 | 
| 125 | 229 | 
입출력 예 #1
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 | 
|---|---|---|---|
| 45 | 1200 | 0021 | 7 | 
입출력 예 #2
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 | 
|---|---|---|---|
| 125 | 11122 | 22111 | 229 | 
class Solution {
    public int solution(int n) {
       int answer = 0;
       String ten_to_three = "";
       // (1)
       while (n > 0) {
           int share = n / 3;
           int remainder = n % 3;
           if (remainder > 9) {
               ten_to_three = (char) (remainder + 55) + ten_to_three;
           } else {
           	ten_to_three = remainder + ten_to_three;
           }
           n = share;
       }
       	// (2)
   		StringBuffer sb = new StringBuffer(ten_to_three);
   		String reverse_ten_to_three = sb.reverse().toString();
   		answer = Integer.parseInt(reverse_ten_to_three, 3);
       return answer;
    }
} 
(1) : 10진수 n을 3진법으로 변환해서 ten_to_three에 대입
(2) : 구해진 3진법 ten_to_three를 뒤집기 위해 StringBuffer를 활용
// (1)
class Solution {
    public int solution(int n) {
       int answer = 0;
       String ten_to_three = "";
       // (2)
       ten_to_three = Integer.toString(n, 3);
       	// (3)
   		StringBuffer sb = new StringBuffer(ten_to_three);
   		String reverse_ten_to_three = sb.reverse().toString();
   		answer = Integer.parseInt(reverse_ten_to_three, 3);
       return answer;
    }
} 
(1) : 해당 문제는 다 Integer의 메소드만 사용해서 풀었다. 첫 번째 풀이보다 실행 기간이 비약적으로 줄어들었다.
(2) : 10진수 n을 3진법으로 변환해서 ten_to_three에 대입
(3) : 구해진 3진법 ten_to_three를 뒤집기 위해 StringBuffer를 활용
-> Irish Github