관리자 글쓰기

언어 : Java

문제번호 29번

문제 설명 : 문제 설명

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

return 하도록 solution 함수를 완성해주세요.

제한사항
  • n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예시
n result
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 해야 합니다.

Solution.java

class Solution {
    public int solution(int n) {
        int answer;
        String ternary = "";
        StringBuilder sb = new StringBuilder();

        while (n != 0) {
            ternary = (n % 3) + ternary;
            n /= 3;
        }

        ternary = sb.append(ternary).reverse().toString();

        answer = Integer.parseInt(ternary, 3);

        return answer;
    }
}

 

답안 도출 과정 : 

1.  10진법 - > 3진법 

while 조건문을 이용한다. 3으로 나눈 나머지를 3진법(ternary)에 넣는다 .몫은 n 으로 넣고 0 이되면 while문 탈출시킨다.

 

2. 3진법 수 reverse

StringBuilder 클래스 reverse() 함수 이용, 문자열 반전시킨다.

 

3. (reversed)3진법 수 -> 10진법

반전된 3진법 - > 10진법 

Integer.parseInt() 함수 이용 해서 다시 10진법수로 바꾼다.