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(, 지수)