3진법 뒤집기
-
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
### 제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
### 입출력 예
### 입출력 예 설명
입출력 예 #1
-
답을 도출하는 과정은 다음과 같습니다.
-
따라서 7을 return 해야 합니다.
입출력 예 #2
-
답을 도출하는 과정은 다음과 같습니다.
-
따라서 229를 return 해야 합니다.
문제 풀이
라이브러리 없이 풀고 싶었는데 잘 안됐다..
- 주어진 10진수를 3진수로 바꿔준 뒤, 역순으로 10진법을 계산
- 어차피 10진수를 뱉으려면 3진수의 각 숫자를 통한 계산이 필요함으로 배열을 활용
import java.util.*;
import java.util.ArrayList;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer> ternary = new ArrayList();
// 1. 3진법 구하기
while(n > 0) {
ternary.add(n%3);
n = n/3;
}
// 2. 3진법(역순) 3. 10진법
for(int i=0; i<ternary.size(); i++){
answer += (Math.pow(3,ternary.size()-i-1)*ternary.get(i));
}
return answer;
}
}
-
- 10진수 → N진수 변환
-
10%N을 뒤에서부터 추가
-
- N진수 → 10진수
-
N진수에서 10진수로 변환 시 각 자릿수에 해당하는 승수와 그 자릿수를 곱하여 전부 더하면 된다.
제곱의 경우는 Math함수, Math.pow를 사용
Math.pow(밑, 지수)