⏱소요 시간 - 이해하는데 1시간 15분
🔑해결 방법
진법을 다 까먹어서 구글링을 해서 풀었다. 진법 변환부터 정리하자면 다음과 같다.
다른 진법간의 변환도 이와 다르지 않다.
또, 새롭게 알게된 메서드들이 있다.
첫 번째.
Integer.toString(int i, int radix) : i를 주어진 진법(radix)의 문자열로 변환
두 번째.
Math.pow(double a, double b) : a의 b제곱을 반환
세 번째.
StringBuilder의 substring(int start, int end) : 시작 위치부터 end-1까지의 문자열을 String으로 반환
이것들만 익혀두면 아래 코드를 이해하는데 어렵지 않다.
🔎소스 코드
package step1;
// 3진법 뒤집기
public class Ex08 {
public static void main(String[] args) {
System.out.println(solution(45));
}
public static int solution(int n) {
int answer = 0;
StringBuilder sb = new StringBuilder();
sb.append(Integer.toString(n, 3)); // 45를 3진법으로 변환 -> 1200
sb.reverse(); // 값 반전 -> 0021
int a = sb.length() - 1;
for(int i = 0; i < sb.length(); i++) {
int before = Integer.parseInt(sb.substring(i, i + 1));
answer = (int) (answer + before * Math.pow(3, a));
a--;
}
return answer;
}
}
'ALGORITHM' 카테고리의 다른 글
[프로그래머스 Java] 같은 숫자는 싫어 (0) | 2021.01.10 |
---|---|
[프로그래머스 Java] 가운데 글자 가져오기 (0) | 2021.01.10 |
[프로그래머스 Java] 2016년 (0) | 2021.01.09 |
[프로그래머스 Java] K번째 수 (0) | 2021.01.09 |
[프로그래머스 Java] 체육복 (0) | 2021.01.09 |