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); 이런식으로 주면 된다.