문제
접근
- 10진법을 3진법으로 바꾸기
- 3진법을 뒤집기
- 3진법을 10진법으로 바꾸기
이 과정에서 1,2번은 한번에 해결할 수 있다.
3진법으로 바꾸는 과정에서 뒤집어서 저장하면 된다.
C++ 같은 경우 int형으로 할 경우 오버플로우가 발생할 수 있다.
코드
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>
using namespace std;
int solution(int n) {
long long answer = 0, base3 = 0;
int t = 1;
while(n>0){
base3 = base3*10 + n%3;
n /= 3;
}
while(base3>0){
answer += (base3%10) * t;
base3 /= 10;
t *= 3;
}
return answer;
}
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
def solution(n):
answer = 0
base3 = 0
while n>0:
base3 = base3*10 + n%3
n = n//3
t = 1
while base3 > 0:
answer += (base3 % 10) * t
base3 = base3//10
t *= 3
return answer