자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
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 해야 합니다.
친절한 문제이기 때문에 설명대로 코드를 작성하면 어렵지 않게 풀 수 있었다.
char형을 int형으로 바꿀 때 (int)char를 쓰는 실수를 했고 이것 때문에 바보같이 시간을 낭비했다.
import java.util.*;
class Solution {
public int solution(int n) {
String reverseN3 = getReverseN3(n);
int n10 = getN10(reverseN3);
return n10;
}
private int getN10(String str){
int ji = 0;
int sum=0;
for(int i=str.length()-1 ; 0 <= i ; i--){
char cNumber = str.charAt(i);
int number = (int)cNumber - '0';
sum += number * Math.pow(3,ji);
ji++;
}
return sum;
}
private String getReverseN3(int n){
int j = 3;
String result = "";
while(n >= j){
int namo = n % j;
n /= j;
result += Integer.toString(namo);
}
result += Integer.toString(n);
return result;
}
}