TIL | [알고리즘] 3진법 뒤집기(Java)
THINKING
- 10진법을 3진법으로 바꾸자
- (n % 3)을 이용하여 list에 3진법 역순을 바로 구하자
- 3진법을 다시 10진법으로 바꾸자
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) 이렇게 파라미터 두 개가 들어가 있다는 것을 알게 되었다.
Integer.parseInt(String s, int radix)
문자열 s를 radix 진수의 Integer형으로 변환시켜준다
위의 풀이에서는 문자열 a를 3진수 Integer형으로 변환시키는 방법으로 문제에 사용했다.
Author And Source
이 문제에 관하여(TIL | [알고리즘] 3진법 뒤집기(Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyemco/TIL-알고리즘-3진법-뒤집기Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)