728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/68935
📌 문제 개요
자연수 n을 3진법으로 변환한 뒤 숫자를 뒤집고,
다시 10진수로 변환하는 문제이다.
단순 구현 문제처럼 보이지만,
Integer.parseInt() 의 진법 처리 방식을 정확히 이해해야 한다.
📌 접근 방법
문제 해결 흐름은 다음과 같다.
- Integer.toString(n, 3) 으로 3진수 문자열 변환
- StringBuilder.reverse() 로 문자열 뒤집기
- Integer.parseInt(str, 3) 으로 다시 10진수 변환
📌 핵심 아이디어
1. 10진수 → 3진수 변환
Integer.toString() 의 두 번째 인자에 진법을 넣으면
해당 진수 문자열로 변환할 수 있다.
String ternary = Integer.toString(n, 3);
45 → "1200"
2. 문자열 뒤집기
StringBuilder.reverse() 를 사용하면 간단하게 문자열을 뒤집을 수 있다.
String reversed = new StringBuilder(ternary)
.reverse()
.toString();
1200 → 0021
3. 다시 10진수 변환
여기서 핵심은 3 을 반드시 넣어야 한다는 점이다.
Integer.parseInt(reversed, 3);
만약 처럼 작성하면 기본적으로 10진수로 처리된다.
Integer.parseInt(reversed);
📌 전체 코드
class Solution {
public int solution(int n) {
// 10진수 → 3진수 문자열
String ternary = Integer.toString(n, 3);
// 문자열 뒤집기
String reversed = new StringBuilder(ternary)
.reverse()
.toString();
// 뒤집힌 3진수 → 10진수
return Integer.parseInt(reversed, 3);
}
}
📄 정리
- Integer.toString(n, radix) 로 진법 변환 가능
- StringBuilder.reverse() 로 문자열 뒤집기 가능
- Integer.parseInt(str, radix) 사용 시 진법 지정 필수
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 시저 암호 JAVA (문자열, 구현, 아스키코드) (0) | 2026.05.25 |
|---|---|
| 프로그래머스 가장 가까운 같은 글자 JAVA 풀이 (해시맵, 문자열) (0) | 2026.05.24 |
| 프로그래머스 최소직사각형 (JAVA) (0) | 2026.05.22 |
| 프로그램머스 이상한 문자 만들기 (JAVA) (0) | 2026.05.21 |
| 프로그래머스 삼총사 JAVA 풀이 (브루트포스, 조합, 시간복잡도) (0) | 2026.05.20 |