ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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에서 확인할 수 있습니다.

    댓글