3진법 뒤집기

김민석·2021년 2월 19일
0

오답노트 Lv.1

목록 보기
5/8

자연수를 3진법으로 바꾼 후, 그 상태에서 reverse 한다. 그 다음 그것을 다시 10진법으로 바꾸는 문제.

나의 풀이는 다음과 같다.

def solution(n):
    shipal = []
    k = 0
    while n>0:
        shipal.insert(0,n%3)
        n = n//3
    
    
    return sum([int(el)*3**idx for idx,el in enumerate(list(shipal))])

아래는 다른 사람의 풀이에서 int(x, base) 함수가 base에 해당하는 진법으로 x를 인식하여 10진법 정수로 바꿔주는 기능이 있다는 것을 알고나서 코드를 간단하게 만든 것이다.

def solution(n):
    shipal = ''
    
    while n>0:
        shipal += str(n%3)
        n = n//3
    
    
    return int(shipal,3)

0개의 댓글