알고리즘 문제
https://school.programmers.co.kr/learn/courses/30/lessons/68935
n을 3진법으로 변환 → divmod로 만들기
변환된 3진법을 뒤집기 → reverse ▶▶▶ += str(y)로 reverse 불필요!
3진법을 10진법으로 변환 → 간단히 자릿수별 곱 ▶▶▶ int(k,3)로 바로 10진수 정수로 변환
값 반환
...
n,y=divmod(n, 3) # n을 3으로 나눈 몫=n 나머지=y
...
divmod함수를 활용해서 3진법으로 만들었다.
k = ""
...
n,y=divmod(n, 3)
k += str(y)
...
그리고 k라는 빈 스트링에 y, 즉 나머지 값을 넣어준다.
...
k = ""
while n > 0:
n,y=divmod(n, 3)
k += str(y)
...
이 것을 n이 0보다 작아지기 전 까지 반복한다.
그럼 k에는 n을 3진수화 한 값을 거꾸로!! k에 저장한다.
...
return int(k, 3)
마지막으로 int를 사용해서 정수화(=10진법)으로 만들어 준다.
int()의 첫 번째 인자는 정수화 할 대상이고, 두 번째 인자는 그 대상의 base 이다. int는 이것을 인지하고 정수로 만든다.
ex)
- k=101이라고 할 때, int(101,3)이 될 것이고, int라는 함수는 이것을 보고
"아, 101은 3진법으로 되어있는 거구나. 나는 101을 10진법으로 바꿔서 출력해야지" 라고 생각한다는 뜻.
def solution(n):
k = ""
while n > 0:
n,y=divmod(n, 3)
k += str(y)
return int(k, 3)
역시나 어렵다...
그렇지만 꾸준히!
가보자고!!