1. 문제 풀이 아이디어
- 주어진 숫자를 3진수로 변환한 뒤, 문자열 내 특정 패턴을 변경하여 문제를 해결한다.
2. 나의 정답 코드
class Solution {
public String solution(int n) {
String answer = Integer.toString(n, 3);
while (answer.contains("0")) {
answer = answer.replace("10", "04").replace("20", "14").replace("40", "24");
if (answer.startsWith("0"))
answer = answer.substring(1);
}
return answer;
}
}
3. 정리
- 입력 숫자를 3진수 문자열로 변환한다.
- 문자열에
0
이 포함된 경우,10
은04
,20
은14
,40
은24
로 치환한다.
- 문자열이
0
으로 시작하면 해당 부분을 제거한다.
- 위 과정을 반복하여 변환된 결과를 반환해 문제를 해결한다.
4. 더 좋은 코드 리뷰
class Solution {
public String solution(int n) {
String[] num = {"4","1","2"};
String answer = "";
while(n > 0){
answer = num[n % 3] + answer;
n = (n - 1) / 3;
}
return answer;
}
}
3진법
을 변형하여 124나라의 규칙(0 → 4)으로 계산했다.
(n - 1) / 3
를 사용해 자리수를 조정했다.
Share article