[프로그래머스] 3진법 뒤집기 문제 풀이(Java)

이하영·2023년 8월 2일
0

코딩테스트

목록 보기
2/21
post-thumbnail
post-custom-banner

✔ 문제 설명

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


✔ 제한사항

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

💬 내 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        //n을 3진법으로 변환
        StringBuilder sb = new StringBuilder();
        while (n > 0) {
            sb.append(n % 3);
            n /= 3;
        }
        
        //3진법으로 변환한 n을 뒤집기
        String n_reverse = sb.reverse().toString();
        
        int power=1;
        
        //3진법을 10진법으로 변환
        for (int i = 0; i < n_reverse.length(); i++) {
            int digit = n_reverse.charAt(i) - '0'; // 문자를 숫자로 변환
            answer += digit * power; // 3의 제곱수로 곱한 후 누적 덧셈
            power *= 3;  // 3의 제곱수를 계산하기 위해 3을 곱함
        }
        
        return answer;
    }
}

💬 다른 사람 풀이

class Solution {
    public int solution(int n) {
        String a = "";

        while(n > 0){
            a = (n % 3) + a;
            n /= 3;
        }
        a = new StringBuilder(a).reverse().toString();


        return Integer.parseInt(a,3);
    }
}

이렇게도 간단하게 풀 수 있었다...

profile
안녕하세요, 웹 개발자 이하영입니다!
post-custom-banner

0개의 댓글