-
[Python] divmod를 사용해 몫과 나머지 구하기언어/파이썬 & 장고 2021. 3. 1. 20:45
divmod 모듈을 모른다면 몫과 나머지를 구하는 로직은 아래와 같습니다.
# 몫 s = a // b # 나머지 r = a % b
위와 같이 구하는 것도 좋지만 divmod를 사용하여 계산할 수도 있습니다.
s, r = divmod(a, b) s, r = divmod(11, 3) # 3, 2
divmod가 편해보여서 평상시에 사용해도 크게 상관은 없지만 처리 속도가 아주 중요한 프로그램에서는 사용에 지양해야 합니다.
계산하고자 하는 숫자가 작을 경우, divmod 보다 직접 연산자를 사용해서 계산하는 방식이 더 빠릅니다. 반대로 숫자가 크다면 divmod를 사용하는 것이 더 빠르게 처리됩니다.
import timeit timeit.timeit('divmod(n, d)', 'n, d = 42, 7') timeit.timeit('n // d, n % d', 'n, d = 42, 7') # 0.101199905 # 0.05530412799999998 timeit.timeit('divmod(n, d)', 'n, d = 2**74207281 - 1, 26', number=1000) timeit.timeit('n // d, n % d', 'n, d = 2**74207281 - 1, 26', number=1000) # 24.707303018999998 # 51.533688481
더 자세한 내용은 https://stackoverflow.com/questions/30079879/is-divmod-faster-than-using-the-and-operators에서 확인할 수 있습니다.