문제설명:
자연수 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 해야 합니다.
구현코드 1 :
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer>list=new ArrayList<>();
while(n!=0){
list.add(n%3);
n/=3;
}
int three=1;
for(int i=list.size()-1;i>=0;i--){
answer+=list.get(i)*three;
three*=3;
}
return answer;
}
}
코드해석:
정말 간단하다 앞뒤 반전을 생각하자마자 맨 처음 나머지가 앞뒤반전했을 때 의 맨 앞에수로 오면되는 것이기 때문에 list 에 담고 다시 10 진수로 바꿔주면 되는 문제이다.
구현코드2
import java.util.*;
class Solution {
public int solution(int n) {
String answer = "";
while(n!=0){
answer+=n%3;
n/=3;
}
return Integer.parseInt(answer,3);
}
}
코드해석:
Integer.parseInt를 이용하여 n진수를10진수로 바로 바꿀수있는메서드 저도 처음 알게되었다.잘 활용한다면 좋을거 같습니다 !.