개발 쥬스

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

알고리즘

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

DevJuice 2024. 11. 22. 18:27
반응형

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

🔍  해결 과정

일반 구현 문제로 다음과 같은 과정으로 문제를 해결하였습니다.

1️⃣ 주어진 정수 n을 3진법 형태의 문자열로 바꾼다. Integer의 toString() 메서드를 활용하였다.
2️⃣ 3진법으로 바꾼 문자열을 StringBuilder 객체를 활용하여 뒤집는다.
3️⃣ 뒤집은 문자열을 다시 10진법으로 바꿔준다. 이 때는 n의 최대값이 1억이므로 이를 3진법으로 바꾸어 정수값으로 표현하면 Long의 범위도 훨씬 넘어가기 때문에 직접 바꿔준다.

 


✏️ 코드

import java.util.*;

class Solution {
    
    public int solution(int n) {
        int answer = 0;
        
        // Integer.toString() 을 활용하여 주어진 진법으로 값을 표현하기
        String convertN = Integer.toString(n, 3);
        
        // 앞뒤 반전하기
        String reverseN = new StringBuilder(convertN).reverse().toString();
        
        // 다시 10진법으로 표현하기 -> 직접 만들기
        answer = convert3To10(reverseN);
        
        return answer;
    }
    
    private int convert3To10(String n) {
        int len = n.length();
        int result = 0;
        
        for (int i = 0; i < len; ++i) {
            result += (n.charAt(i) - '0') * (int) Math.pow(3, len - 1 - i);
        }
        
        return result;
    }
}
반응형