문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n result
45 7
125 229
입출력 예 설명
입출력 예 ##1
답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
45 1200 0021 7
따라서 7을 return 해야 합니다.
입출력 예 ##2
답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 11122 22111 229
따라서 229를 return 해야 합니다.
class Solution {
public int solution(int n) {
int answer = 0;
String temp=””;
//3진법으로 변환
while(true){
if(n/3>=1){
temp = n%3 + temp;
n = n/3;
}else{
temp = n%3 + temp;
break;
}
}
System.out.println(temp);
//변환된 3진법을 역순으로 정렬
String splitString[] = temp.split("");
temp="";
for(int i=splitString.length-1;i>=0;i--){
temp+=splitString[i];
}
System.out.println(temp);
//정렬된 3진법을 숫자형으로 변환, 다만 int형보다 커질수 있기에 Long 으로 변환하여 계산함
Long a = Long.parseLong(temp);
//10진법 변환에 사용할 자릿수
int c=1;
//10진법으로 변환
while(true){
if(a/10>=1){
answer += a%10*c;
a = a/10;
c *=3;
}else{
answer += a%10*c;
break;
}
}
return answer;
} }