import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int n) {
int answer = 0;
List<Integer> number = new ArrayList<>();
//3진법으로 변환 + 뒤집을 거라서 0부터 넣어도 됨
while (n > 0) {
number.add(n % 3);
n = n/3;
}
//다시 10진법으로 변환
for (int j = 0; j < number.size(); j++) {
answer += number.get(j) * Math.pow(3, number.size()-1-j);
}
return answer;
}
}
뒤집는다는 부분때문에 처음에 List배열을 만들어서 add를 사용하였는데
String으로 만들어서 아래와 같이 뒤집는 방법도 있다.
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);
}
}
그리고 a = a + (n % 3)으로 하면 뒤집지 않아도 된다.
진법/진수
- 자주 사용하는 2, 8, 16은 Integer에 메소드가 있다.
- 2진수 : Integer.toBinaryString(int num) → String으로 반환
- 8진수 : Integer.toOctalString(int num) → String으로 반환
- 16진수 : Integer.toHexString(int num) → String으로 반환
- 그 외의 경우에는 위의 경우처럼 While문을 사용하여 String형태로 만들어준다.
- Interger.parseInt(str, 진법)을 사용하면 간단하게 10진법 int로 변환할 수 있다.
'Language > JAVA' 카테고리의 다른 글
#Stream (0) | 2022.01.19 |
---|---|
[프로그래머스] 최소직사각형 (0) | 2022.01.19 |
[프로그래머스] 하샤드 수 (0) | 2022.01.19 |
[프로그래머스] 콜라츠 추측 (0) | 2022.01.19 |
[프로그래머스] 제일 작은 수 제거하기 (0) | 2022.01.19 |