본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
파이썬 코드
# 3진법 뒤집기
def solution(n):
# 입력받은 수 n을 3진법으로 변환하기
# 3진수를 저장하는 변수(문자열)
ternary = ''
# 3진수 변환
# n이 3보다 크면 계속 나누기
while n >= 3:
# 나머지는 ternary에 넣기(문자열 변환)
ternary += str(n % 3)
# n에 3을 나눈 몫을 넣기
n = n // 3
# 3으로 계속 나눈 몫이 3이하이면 ternary에 넣기(문자열 변환)
ternary += str(n)
# 위의 로직은 앞뒤가 반전된 3진수를 만들게 된다.
# ternary는 문자열이므로 바로 10진법으로 변환
answer = int(ternary, 3)
return answer
Comment
3진법으로 변환하기 위해서는 while문의 조건을 이용하여 나눈 몫과 나머지를 조건에 맞게 변수에 넣어준다. 위의 코드는 문제에서 제시한대로 바로 뒤집힌 3진수를 만들기 때문에 while문 처리 후 바로 int함수로 10진법으로 변환한다. 여기서, int로 특정 진법을 10진법으로 변환시에는 첫 번째 인자가 문자열이어야한다. 그러므로 ternary를 처음에 문자열로 선언하였고 while문 처리에서 나머지, 몫을 더하는 것도 문자열이었기 때문에 +연산으로 간편히 만들어 낼 수 있었다.
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 나누어 떨어지는 숫자 배열 - python 풀이 (0) | 2021.04.21 |
---|---|
[프로그래머스] 소수 만들기 - python 풀이 (0) | 2021.04.20 |
[프로그래머스] 두 개 뽑아서 더하기 - python 풀이 (0) | 2021.04.20 |
[프로그래머스] 예산 - python 풀이 (0) | 2021.04.20 |
[프로그래머스] 음양 더하기 - python 풀이 (0) | 2021.04.20 |