https://programmers.co.kr/learn/courses/30/lessons/68935?language=java
풀이
10진법 -> 3진법 변환
나머지가 0이 될때까지 나눠주며 몫을 저장한다. 45의 경우 sb에 0021이 저장된다.
3진법 -> 10진법 변환
자릿수에 맞게 3의 배곱근을 곱해주며 다시 더한다. 0021을 reverse()함수로 반전해서 1200으로 만들고 곱해서 수월하다.
class Solution {
public int solution(int n) {
StringBuilder sb = new StringBuilder();
while(n!=0){
sb.append(n%3);
n = n/3 ;
}
int answer=0;
sb.reverse();
for(int i = 0 ; i < sb.length();i++){
answer += (int)Math.pow(3,i)*(sb.charAt(i) - '0');
}
return answer;
}
}
+
다른사람풀이
parseInt()를 이용해 3진법->10진법으로 변환했다.
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = a + (n % 3);
n /= 3;
}
a = new StringBuilder(a).reverse().toString();
return Integer.parseInt(a,3);
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 시저 암호 (0) | 2022.02.08 |
---|---|
[Java] 프로그래머스 : 콜라츠 추측 (0) | 2022.02.07 |
[Java] 프로그래머스 : 이상한 문자 만들기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 문자열 내 마음대로 정렬하기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[]) (0) | 2022.01.31 |