Algorithm Problem with Python — 9day
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
입출력 예
입출력 예 설명
입출력 예 #1
입출력 예 #2
인풋으로 주어진 10진법의 자연수를 3진법으로 바꾼 후 뒤집어진 상태를 다시 10진.법으로 바꾸는 문제입니다.
원하는 진법으로 변경할 수 있는지가 핵심이 되는 문제입니다.
def solution(n):
answer = ''
while n > 0:
n, re = divmod(n,3) # n을 3으로 나눈 몫과 나머지
answer += str(re)
return int(answer, 3)
# divmod() : 몫과 나머지를 리턴합니다. 리턴 값이 2개이므로 튜플을 사용합니다.
# int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌
진법을 변경하는 과정에서 a/b, a%b를 통해서도 몫과 나머지를 구할 수 있는 방법이 있고,
divmob()을 통해서도 구할 수 있었습니다.
가독성이나 편리함에서 후자가 좋다고 생각하여 사용했지만 무조건 좋진 않다고 합니다.
작은 숫자를 다룰 때는 전자가 더 빠르고 큰 숫자를 다룰 때는 후자가 더 빠르다고 합니다.
팀 코드 스타일이나 상황에 따라 맞게 사용해야 겠습니다.