문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | result |
45 | 7 |
125 | 229 |
입출력 예 #1
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
입출력 예 #2
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
풀이
class Solution {
public int solution(int n) {
StringBuilder ternary = new StringBuilder();
// 1. 3진수 문자열로 만들기
while(n > 0){
ternary.append(n % 3);
n /= 3;
}
// 2. 역순으로 저장되었기 때문에 그대로 사용
String reversed = ternary.toString();
// 3. 3진수 문자열을 10진수로 해석
int answer = 0;
int base = 1;
for (int i = reversed.length() - 1; i >= 0; i--) {
int digit = reversed.charAt(i) - '0';
answer += digit * base;
base *= 3;
}
return answer;
}
}
풀이2
class Solution {
public int solution(int n) {
StringBuilder sb = new StringBuilder();
// 1. 3진법 변환 (문자열 형태로)
while(n > 0){
sb.append(n % 3);
n /= 3;
}
// 2. 뒤집을 필요 없이 이미 역순으로 append 했음
String reversed = sb.toString();
// 3. 뒤집힌 3진법 문자열을 10진수로 변환
return Integer.parseInt(reversed, 3);
}
}
'👨💻 Coding Test > Programers' 카테고리의 다른 글
[Programmers/Java/Lv.1/문자열] 47.신규 아이디 추천 (0) | 2025.05.29 |
---|---|
[Programmers/Java/Lv.1/수학] 46.내적 (0) | 2025.05.29 |
[Programmers/Java/Lv.1/시뮬레이션] 44.키패드 누르기 (0) | 2025.05.26 |
[Programmers/Java/Lv.1/Stack] 43.크레인 인형뽑기 게임 (0) | 2025.05.24 |
[Programmers/Java/Lv.1/그리디] 42.체육복 (0) | 2025.05.24 |