반응형
프로그래머스의 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
반응형
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 Python Code (0) | 2022.08.27 |
---|---|
[프로그래머스] 두 개 뽑아서 더하기 Python Code (0) | 2022.08.27 |
[프로그래머스] 최소 직사각형 Python Code (0) | 2022.08.27 |
[프로그래머스] 나머지가 1이 되는 수 찾기 Python Code (0) | 2022.08.23 |
[프로그래머스] 2016년 Python Code (0) | 2022.08.20 |
댓글