class Solution {
public int solution(int n) {
int answer = 0;
StringBuilder sb = new StringBuilder();
if(n<3) {
sb.append(n);
}
while (n >= 3) {
sb.append(n % 3 + "");
n = n / 3;
if (n < 3) {
sb.append(n);
}
}
int k = 1;
for (int i = sb.length() - 1; i >= 0; i--) {
answer += Integer.parseInt(sb.charAt(i) + "") * k;
k *= 3;
}
return answer;
}
}
-> 앞 뒤로 뒤집는다는 단어가 나온 순간 StringBuilder를 사용해봐야 겠다는 생각!
문제풀이
1. StringBuilder 객체 생성
2. ** 막판에 테스트 케이스가 하나 틀린 이유 -> n이 (0,1,2) 경우 while문에 들어가지 않으면서 값이 무조건 0이 나온다. 예외가 생길 경우 그 값을 sb.append해서 넣어주고 3번째 while문은 돌아가지 않는다.
3. while문 -> 처음에는 n>3으로 조건을 주었는데 이는 n이 3일 경우 (0,1) 자동으로 거꾸로 들어가야 하는데 이를 만족하려면 n>=3 으로해야하는 것이 당연한거였다.
n을 3으로 나눠 그 몫을 sb에 저장하고 n의 값을 3으로 나눠준다.
4. 곱할 3진법의 값을 k에 저장하고
5. for문을 돌면서 뒤에 있는 값에 k값을 곱해서 (이후 3씩 곱해준다) answer에 int의 값으로 저장한다.
6. 끝!
'코딩테스트 문제풀이' 카테고리의 다른 글
프로그래머스 (두 개 뽑아서 더하기) (0) | 2021.09.30 |
---|---|
프로그래머스 (예산) (0) | 2021.09.29 |
프로그래머스 (약수의 개수) (0) | 2021.09.27 |
프로그래머스 (실패율) (0) | 2021.09.22 |
프로그래머스 (폰켓몬) (0) | 2021.09.21 |