Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[프로그래머스] 3진법 뒤집기 본문

코테준비

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

Seung__ 2021. 12. 10. 22:00

1. 문제


자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후,

이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.


제한사항

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

입출력 예

n reult
45 7
125 229

입출력 예 설명

 

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

 

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

 

2. 문제 정리


  • 진법은 바꾸는 방법을 코드고 구현하는 것.
  • 결국 몫과 나머지는 계속 구하고, 나머지를 list에 담아야 한다.

  • 실제 진법은 변환하면 마지막에 나온 나머지부터 역순서로 읽어야 한다.
  • 문제에서는 그 순서를 뒤집으라 했으므로 나온 순서대로 적용하면 된다.
  • 위의 예시의 경우 뒤집은 다음 10진법으로바꾸면
  • 1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1* 2^3 이다.

 

3. 코드


import java.util.ArrayList;

class Solution {
    public int solution(int n) {
        int answer = 0;
        ArrayList<Integer> trinary= new ArrayList<>();
        int Q = 0;
        int R = 0;
        while (true){
            Q = n / 3;
            R = n % 3;

            trinary.add(R);
            if (Q !=0){
            n=Q;
            }else {
                break;
            }
        }

        for (int i=trinary.size()-1; i>=0 ;i--){
            answer += trinary.get(i) * Math.pow(3, trinary.size()-1-i);
        }
        return answer;
    }
}

 

 

4. GitHub : 211210 TrinaryDigit


 

 

GitHub - bsh6463/coding_test

Contribute to bsh6463/coding_test development by creating an account on GitHub.

github.com

 

Comments