문제 링크: https://programmers.co.kr/learn/courses/30/lessons/12899
이 문제는 테스트 케이스를 찾으러 질문하기를 들어갔다가 스포를 당해버렸다...
처음에 테스트 케이스를 일부만 보고 3으로 나눈 나머지 값에 따라 StringBuilder
에 붙여야겠다라는 접근까지는 좋았다.
내 생각대로 코드를 짜고 혼자 검증할 때 얼추 맞는다는 들고 코드 실행
도 통과했다.
하지만, 채점에서 틀려서 뭔가 걸릴만한 빡센 테스트 케이스가 있을거라 생각하고 질문하기
를 들어갔다가 스포를 당했다.
조심하자...
핵심
이 문제의 핵심은 나머지값이 0일 때, 몫을 -1 해주는 것이 중요하다. 이는 3진법과 달리 0을 안쓰기 때문이다.
자세한 설명은 아래의 링크로 대체하겠다.
https://yabmoons.tistory.com/692
class Solution {
public String solution(int n) {
StringBuilder sb = new StringBuilder();
int[] numbers = { 4, 1, 2 };
int remain;
do {
remain = n % 3;
sb.insert(0, numbers[remain]);
n /= 3;
if (remain == 0) {
n -= 1;
}
} while(n > 0);
return sb.toString();
}
}