문제
요약
- 주어진 10진수 n을 3진수로 변환하고, 거꾸로 뒤집어, 10진수로 변환한 뒤 반환한다.
분류
- 문자열 : 진법 바꾸기
풀이
1. 내 풀이
- 그냥 스탠다드한 방법이다. 진법 변환에 while 을 사용했다.
def solution(n):
num_3 = []
while True:
if n // 3 == 0:
num_3.append(n)
break
num_3.append(n % 3)
n //= 3
num_10 = 0
for index, val in enumerate(num_3):
num_10 += val * (3 ** (len(num_3) - index - 1))
return num_10
2. 최적화 풀이
- <취업과 이직을 위한 프로그래머스 코딩테스트 문제 풀이 전략> 을 참고한 코드입니다. (링크)
- divmod() 는 첫 번째 매개변수를 두 번째 매개변수로 나눠, 몫과 나머지를 함께 반환하는 함수이다.
- int() 함수의 두 번째 인자로, 수 n을 주면 n진수를 십진수로 변환해준다.
def radixChange (num, radix):
if num == 0: return '0'
nums = []
while num:
num, digit = divmod(num, radix)
nums.append(str(digit))
return ''.join(nums)
def solution(n):
return int(radixChange(n, 3), 3)