Leetcode Problem
Base 7
주어진 수 num을 7진수로 바꾸는 문제입니다.
1
2
3
4
5
6
7
class Solution:
def convertToBase7(self, num: int) -> str:
n, sign = "", -1 if num < 0 else 1
num *= sign
while num > 0:
n, num = n + str(num % 7), num // 7
return "0" if not n else n[::-1] if sign >= 0 else "-" + n[::-1]
0이 될 때까지 나누고 나머지를 이용하여 7진수를 만들었습니다. 단, 음수일 경우 while문을 돌 수 없으므로 일단 양수로 바꾼 후에 나중에 -를 더해줬습니다.
1
2
3
4
5
6
7
8
9
class Solution:
def convertToBase7(self, num: int) -> str:
n, sign = "", 0
if num < 0:
sign = -1
num *= sign
while num > 0:
n, num = str(num % 7) + n, num // 7
return "0" if not n else n if sign >= 0 else "-" + n
solution의 풀이를 참고하여 좀 다듬었습니다. sign 변수의 경우 num < 0일 경우에 -1이 되는데, 이 때 num을 양수로 만드는 과정도 함께 포함시켜서 양수에 1을 곱하는 불필요한 연산을 줄였습니다. 또한 나머지를 문자열에 추가할 때 앞에 추가하여 문자열을 뒤집는 연산을 줄였습니다.
divmod 함수를 사용할 경우, // 연산과 % 연산의 결과를 한 번에 얻을 수 있어서 연산이 줄어든다 생각했는데 기존 결과와 속도의 차이가 없었습니다.
참고