Programming/Algorithm

[프로그래머스] Lv.1 3진법 뒤집기 - JAVA

안녕주 2023. 9. 5. 16:37

1️⃣ 문제 설명

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

 

 

2️⃣ 제한 사항

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

 

3️⃣ 입출력 예

n result
45 7
125 229

 

4️⃣ 입출력 예 설명

입출력 예 #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 해야 합니다.


🌱 문제 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        StringBuffer sb = new StringBuffer();
        sb.append(Integer.toString(n,3));
        sb = sb.reverse();
        answer = Integer.parseInt(sb.toString(),3); 
        
        return answer;
    }
}

1. 먼저 n을 3진수로 변환한다. 

Integer.toString(n,3) // n을 3진수의 String으로 변환한다

2. String을 뒤집는다.

sb.reverse()

3. 3진수의 String을 10진수의 정수로 변형한다.

Integer.parseInt(sb.toString(),3) //3진수의 String을 10진수의 정수형으로 변환한다

 

3가지 기능을 알게 되었다. 

 

 

참고(알면 좋은 것)

[Java] 자바 StringBuilder와 StringBuffer 정리 및 사용법 (tistory.com)