자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
| n | result |
|---|---|
| 45 | 7 |
| 125 | 229 |
입출력 예 #1
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
|---|---|---|---|
| 45 | 1200 | 0021 | 7 |
입출력 예 #2
| n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
|---|---|---|---|
| 125 | 11122 | 22111 | 229 |
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
📝내가 제출한 답
class Solution {
public int solution(int n) {
int answer = 0;
String str = Integer.toString(n,3);
StringBuffer sb = new StringBuffer(str);
str = sb.reverse().toString();
answer = Integer.parseInt(str,3);
return answer;
}
}
먼저 Integer.toString(n,3)를 사용하면 n을 3진법으로 변환한 값을 문자열로 얻을 수 있다.
문자열을 StringBuffer로 변환한 이유는 StringBuffer에 reverse메서드 사용을 위해서였다.
이렇게 문자열을 뒤집은 값을 Integer로 변환해주면 원하는 값이 나온다.
💡 공부한 내용
10진법 숫자를 원하는 진법으로 나타내는 방법
- Integer.toString(10진법 숫자,변환하고 싶은 진법 숫자)
StringBuffer에 대해서, StringBuffer의 reverse()메소드
10진법을 변환한 값은 String으로 받아온다는 것을 주의하자