접근 방법
- 입력된 10진법 수를 3으로 나누어 3진법으로 변환
- 이를 뒤집어 리스트의 n번째 원소와 3의 n 제곱을 곱하여 정답 도출
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
int j = 1;
vector<int> ternary;
while(n){
ternary.push_back(n%3);
n /= 3;
}
for(int i = ternary.size() - 1; i >= 0; i--){
answer += (j * ternary[i]);
j *= 3;
}
return answer;
}
def solution(n):
answer = 0
ternary = []
while n:
ternary.append(n % 3)
n //= 3
ternary.reverse()
for i, v in enumerate(ternary):
answer += (3 ** i) * v
return answer
생각 자체는 몇 달 전 C++로 풀었을 때와 같다.
파이썬에서 나누기 할 때 // 이렇게 해야하는걸 계속 까먹고 / 하나만 썼다가 틀린다.. 까먹지 말자!!!
스스로 뿌듯한 점 : enumerate를 썼다٩(๑>ꇴ< ๑)و
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
와.. 이건 뭐지...?
int 함수는 정수로 변환할 값과 밑을 입력해줄 수 있다.
int(value, base)
- value는 str 가능
- value는 0, base는 10이 기본값
- base는 2~36 가능