알고리즘(Algorithm)/프로그래머스(Programmers)

[프로그래머스] 3진법 뒤집기 - JAVA

나아가는중 2021. 10. 23. 15:46
반응형

프로그래머스 3진법 뒤집기 - JAVA


문제 설명

  1. 자연수 n이 매개변수로 주어진다.
  2. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return.

제한 사항

  1. n은 1 이상 100,000,000 이하인 자연수입니다.

문제 풀이

  1. 주어진 n을 3진법으로 변환
    • n % 3을 n이 0이 되기전까지 n / 3을 하며 반복함으로 3진법으로 변환할 수 있음.
  2. 변환한 3진법 수를 앞뒤로 뒤집는다.
  3. 다시 10진법으로 변환하는 return.
    • 반전된 3진법 수의 뒷자리부터 3^i을 곱함으로 10진법으로 변환할 수 있음.

소스 코드

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;

        List<Integer> list = new ArrayList<>();
        while (n != 0) {
            list.add(n % 3);
            n /= 3;
        }

        Collections.reverse(list);

        for (int i = 0; i < list.size(); i++) {
            answer += list.get(i) * Math.pow(3, i);
        }

        return answer;
    }
}
반응형