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을 더해줄 일이 없었겠다.