문제 풀이 (JAVA)

class Solution {
    public int solution(int n) {
        int Inum = 0;
        int answer =0;
        String Snum="";
        while(n>0){ // 앞뒤 반전 3진법으로 저장하는 반복문
            Inum=n%3;
            Snum+=Integer.toString(Inum); // 계산된 3진법 나머지 숫자를 문자열로 변환
            n=n/3; // 다음 나눌 숫자를 3으로 나눠 저장한다.
        }
        int j=Snum.length()-1; // 3진법 첫번째 숫자의 제곱을 계산하기 위한 변수 선언.
        for(int i=0;i<Snum.length(); i++){
            // 앞뒤반전 (숫자 3의 n승 * 숫자) 식을 사용하여 10진수로 저장.
            answer+=(int)Math.pow(3,j--)*Character.getNumericValue(Snum.charAt(i));
        }

        return answer;
    }
}

주요 핵심 포인트

1. while문을 사용하여 앞뒤 반전 3진법 수를 문자열로 저장하였다.

2. 3진법 첫번째 숫자의 제곱은 문자열의 길이 - 1 의 규칙을 사용하여 3진법 숫자를 차례대로 10진법 수로 바꾸어 10진법으로 저장하였다.

'프로그래머스(JAVA)' 카테고리의 다른 글

실패율  (0) 2022.05.21
약수의 개수와 덧셈  (0) 2022.05.21
예산  (0) 2022.05.21
두 개 뽑아서 더하기  (0) 2022.05.21
2016년  (0) 2022.05.21

+ Recent posts