- 10진수로 변환 시,
- 'A' (10) 보다 클 경우, 'A'만큼 빼주고 대신 10을 더해준다.
- 'A' (10) 보다 작을 경우, '0'을 빼주면서 int로 변환
- 3진수로 변환 시,
- StringBuilder의 insert를 통해 맨 앞 index=0에 계산된 값을 추가한다.
import java.util.*;
class Solution {
public int solution(int n) {
String Third = toThird(n);
String Third_reverse = Change_Seq(Third);
int answer = toTen(Third_reverse);
return answer;
}
public static String toThird(int n){
StringBuilder sb = new StringBuilder();
while (n >= 1) {
sb.insert(0, n % 3);
n /= 3;
}
return sb.toString();
}
public static String Change_Seq(String n){
StringBuilder sb = new StringBuilder();
for(int i=n.length()-1; i>=0; i--){
sb.append(n.charAt(i));
}
return sb.toString();
}
public static int toTen(String n){
char[] arr = n.toCharArray();
int res = 0;
for(int i=0; i<arr.length; i++){
if(arr[i] >= 'A'){
res = res * 3 + (arr[i] - 'A' + 10);
}else{
res = res * 3 + (arr[i] - '0');
}
//System.out.println("Check "+arr[i]+" "+res);
}
return res;
}
}