문제
자연수 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을 retrun 해야 합니다.
입출력 예 #2
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
풀이
수를 n진법으로 바꾸는 연산은 나머지 연산을 반복하면 된다. 10진법 이상의 경우에는 배열을 통해 index와 value를 이용해 가능하다.
또한, n진법으로 변환한 수를 10진법으로 다시 변환하는 것은 제곱을 이용해 변환한다.
코드
public int solution(int n) {
ArrayList<Integer> arr = new ArrayList();
while(n != 0){
arr.add(n % 3);
n /= 3;
}
int answer = 0;
for(int i=0; i < arr.size(); i++){
if(arr.get(i) == 0)
continue;
answer += Math.pow(3, arr.size() - i - 1) * arr.get(i);
}
return answer;
}
'Algorithm > Problems' 카테고리의 다른 글
[JAVA]두 수의 합(Baekjoon) (0) | 2023.02.24 |
---|---|
[JAVA]색종이(Baekjoon) (0) | 2023.02.24 |
[JAVA]가장 큰 수(Programmers) (0) | 2023.02.17 |
[JAVA]사물인식 최소 면적 산출 프로그램(Softeer) (0) | 2023.02.16 |
[JAVA]슈퍼컴퓨터 클러스터(Softeer) (0) | 2023.02.16 |