본문 바로가기
Coding Test/Python

[프로그래머스] 3진법 뒤집기 Python Code

by giem 2022. 8. 27.
반응형

 

프로그래머스의 3진법 뒤집기를 Python으로 풀어보겠다.


문제

문제는 간단하게 자연수 n을 3진법으로 변환하고 뒤집은 후 10진법으로 바꾸면 된다.


구현

프로그래밍에서 진법 변환을 할 때 div / mod 연산을 하며 mod값을 append 하는데

여기서의 mod값을 결과에 하나씩 append 해준다.

이때 결과가 거꾸로 저장되므로 뒤집을 필요가 없이

int로 형 변환을 하면 된다.


코드
def solution(n):
    rev_base = ''
    while n > 0:
        n, mod = divmod(n, 3)
        rev_base += str(mod)

    return int(rev_base,3)

divmod는 divend와 divider를 인자로 받아 몫과 나머지를 tuple 형태로 돌려주는 것이다.

 

파이썬의 int는 형 변환의 기능 외에도 진법 변환이 되기 때문에 이 문제에서 사용 가능하다.


다른 풀이

다른 풀이도 다 비슷한 로직이다.

int로 진법 변환을 하기 싫다면 아래 로직을 사용하면 될 것 같다.

cnt=1
for b in range(len(rev_base),0,-1):
        answer += (int(rev_base[b-1])*cnt)
        cnt *= 3

 

반응형

댓글