프로그래머스/Lv. 1

[프로그래머스 코딩테스트] 3진법 뒤집기(Java)

Sigfriede 2023. 6. 9. 01:00

  문제 설명

  자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

  제한사항

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

 

  입출력 예

n result
45 7
125 229
class Solution {
    public int solution(int n) {
        int answer = 0;
        while (n > 0) {
            answer = answer * 3 + n % 3;
            n /= 3;
        }
        return answer;
    }
}

  while문은 n이 0보다 클 때 반복합니다.

  answer에 3을 곱한 값에 n을 3으로 나눈 나머지를 더합니다.

  n을 3으로 나눕니다.

  while의 조건이 충족될 때까지 이 과정을 반복합니다.

  계산이 끝난 후 answer를 반환합니다.

 

  n에 입출력 예 1번인 45를 넣어 계산해보면 과정은 다음과 같습니다.

n % 3 = 0, answer = 0 * 3 + 0 = 0
n / 3 = 15

n % 3 = 0, answer = 0 * 3 + 0 = 0
n / 3 = 5

n % 3 = 0, answer = 0 * 3 + 2 = 2
n / 3 = 1

n % 3 = 1, answer = 2 * 3 + 1 = 7
n / 3 = 0