📘문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 제한조건
- n은 1 이상 100,000,000 이하인 자연수입니다.
💡 개념 설명
- 3진법 변환 및 뒤집기: 이 0보다 클 때까지 3으로 나눈 나머지를 구하여 StringBuilder에 추가합니다. 이 과정(n % 3 연산과 sb.append()) 자체가 3진법 변환과 뒤집기를 동시에 수행합니다.
- 자릿수 제거: 나머지 연산 후, 을 3으로 나누어(n /= 3) 다음 자릿수를 준비합니다.
- 10진법 변환: StringBuilder에 저장된 뒤집힌 3진법 문자열을 기수 3을 지정하여 Integer.parseInt(String, 3)메서드로 10진수 값으로 변환합니다.
- 결과 반환: 최종 10진수 값을 반환합니다.
📎 입출력 예시


📎 코드
public class Solution {
public int solution(int n) {
StringBuilder sb = new StringBuilder();
// 1. 3진법 변환 및 뒤집기
while (n > 0) {
sb.append(n % 3);
n /= 3;
}
// 2. 뒤집힌 3진법 문자열을 다시 10진법으로 변환
return Integer.parseInt(sb.toString(), 3);
}
public static void main(String[] args) {
Solution sol = new Solution();
// 테스트 케이스
int n1 = 45; // 10진수 45 -> 3진법 1200 -> 뒤집기 0021 -> 10진수 7
int n2 = 125; // 10진수 125 -> 3진법 11122 -> 뒤집기 22111 -> 10진수 229
System.out.println("n = " + n1 + ", 결과: " + sol.solution(n1)); // 예상 출력: 7
System.out.println("n = " + n2 + ", 결과: " + sol.solution(n2)); // 예상 출력: 229
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 32 - 프로그래머스 기출 문제(JAVA) / 삼총사 / Day 29 (0) | 2026.01.19 |
|---|---|
| [Java] 코딩 31 - 프로그래머스 기출 문제(JAVA) / 이상한 문자 만들기 / Day 28 (0) | 2026.01.09 |
| [Java] 코딩 29 - 프로그래머스 기출 문제(JAVA) / 최대공약수와 최소공배수 / Day 26 (0) | 2025.12.12 |
| [Java] 코딩 28 - 프로그래머스 기출 문제(JAVA) / 직사각형 별찍기 / Day 25 (0) | 2025.11.22 |
| [Java] 코딩 27 - 프로그래머스 기출 문제(JAVA) / 행렬의 덧셈 / Day 24 (0) | 2025.11.18 |