Math,.pow()
: 거듭제곱 구하는 메소드 활용하자import java.util.ArrayList;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer> temp = new ArrayList<>();
while(n != 0) {
temp.add(n % 3);
n /= 3;
}
int cnt = temp.size() - 1;
for (int i : temp) {
answer += Math.pow(3, cnt--) * i;
}
return answer;
}
}
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = a + (n % 3);
n /= 3;
}
a = new StringBuilder(a).toString();
return Integer.parseInt(a,3);
}
}
원래 좋아요 많이 받은 풀이에는
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
a = new StringBuilder(a).reversese().toString();
이렇게 (n % 3) 뒤에 a를 붙이고 reverse()를 이용해 역순을 만들었는데, 좀 더 생각해보니 a + (n % 3)을 하면 reverse()를 사용하지 않고도 역순으로 정렬할 수 있다고 판단해 조금 변형을 했다.
또한, Integer.parseInt()에 파라미터가 하나만 들어가는 줄 알았는데, Integer.parseInt(String s, int radix) 이렇게 파라미터 두 개가 들어가 있다는 것을 알게 되었다.
문자열 s를 radix 진수의 Integer형으로 변환시켜준다
위의 풀이에서는 문자열 a를 3진수 Integer형으로 변환시키는 방법으로 문제에 사용했다.