<문제>
<코드>
class Solution {
public int solution(int n) {
int answer = 0;
String three = "";
// 10진법 n을 3진법으로 바꾼다.
// 뒤집은 3진법 숫자를 원하니 three 뒤에 n % 3의 결과를 이어 붙여서 뒤집는 과정을 생략한다.
while(n != 0)
{
three += n % 3;
n /= 3;
}
// 매번 three.length()을 호출하지 않고 한번만 호출해 length 변수에 담아둔다.
int length = three.length();
// 예를 들어 뒤집은 숫자가 121이라고 하면
// (1 * 3^2) + (2 * 3^1) + (1 * 3^0) = 16 이 나온다.
// three의 첫 번째 숫자부터 순회하면서 3의 (length - 1 - i)승을 곱해준 결과를 더해준다.
for (int i = 0; i < length; i++) {
answer += Integer.parseInt(String.valueOf(three.charAt(i)))
* Math.pow(3, length - 1 - i);
}
return answer;
}
}
반응형
'코딩 테스트 > 알고리즘(Java)' 카테고리의 다른 글
[프로그래머스/Lv.1] 최소직사각형 (0) | 2025.01.23 |
---|---|
[프로그래머스/Lv.2] 짝지어 제거하기 (1) | 2025.01.21 |
[프로그래머스/Lv.2] 다음 큰 숫자 (0) | 2025.01.16 |
[프로그래머스/Lv.1] 삼총사 (1) | 2025.01.16 |
[프로그래머스][Lv.1]문자열을 정수로 바꾸기 (0) | 2025.01.11 |