본문 바로가기
IT/Python Basic

[Python] divmod() 함수

by Echinacea 2025. 11. 12.
반응형

divmod() 활용 예시 

 

  • 프로그래머스 Lv1~Lv2 (백준 기준 브론즈~실버) 코테에서 가독성 높이기용 보조 함수로 자주 등장
  • “몫과 나머지를 동시에 써야 할 때”는 항상 divmod()가 더 깔끔

 

 

1. 시간 계산에 활용 (초를 분과 초로 변환)

총 시간을 분과 남은 초로 나누어 계산할 때 유용합니다.

# 초(total_seconds)를 분(minutes)과 초(seconds)로 변환하는 예제
# divmod(x, y)는 (x // y, x % y) 형태의 튜플을 반환함

examples = [45, 60, 125, 350, 601, 1234, 3599]

for total_seconds in examples:
    minutes, seconds = divmod(total_seconds, 60)
    print(f"{total_seconds}초는 {minutes}분 {seconds}초입니다.")

 

실행 결과 💡 

45초는 0분 45초입니다.
60초는 1분 0초입니다.
125초는 2분 5초입니다.
350초는 5분 50초입니다.
601초는 10분 1초입니다.
1234초는 20분 34초입니다.
3599초는 59분 59초입니다.

 

 

2. 큰 숫자를 다룰 때 (동전 개수 계산)

큰 금액을 특정 단위로 나누어 동전 또는 지폐 개수를 계산할 때 간결하게 사용할 수 있습니다.

# 금액(money)을 동전 단위(coin_unit)로 나누어
# 몇 개의 동전이 필요한지와 남는 돈을 구하는 예제

examples = [
    (7800, 500),
    (1250, 100),
    (9990, 1000),
    (3720, 500),
    (10000, 500),
    (12345, 1000),
]

for money, coin_unit in examples:
    count, remaining = divmod(money, coin_unit)
    print(f"{money}원으로 {coin_unit}원짜리 동전을 {count}개 만들 수 있고, {remaining}원이 남습니다.")
 

 

실행 결과 💡 

7800원으로 500원짜리 동전을 15개 만들 수 있고, 300원이 남습니다.
1250원으로 100원짜리 동전을 12개 만들 수 있고, 50원이 남습니다.
9990원으로 1000원짜리 동전을 9개 만들 수 있고, 990원이 남습니다.
3720원으로 500원짜리 동전을 7개 만들 수 있고, 220원이 남습니다.
10000원으로 500원짜리 동전을 20개 만들 수 있고, 0원이 남습니다.
12345원으로 1000원짜리 동전을 12개 만들 수 있고, 345원이 남습니다.

 

 

3. 음수가 포함된 경우

divmod() 함수는 정수 나눗셈 규칙을 따르므로, 음수가 포함될 경우 결과는 일반적인 몫(//)과 나머지(%) 연산과 동일합니다.

연산 a // b (몫) a % b (나머지) divmod(a, b)
divmod(10, 3) 3 1 (3, 1)
divmod(-10, 3) -4 2 (-4, 2)
divmod(10, -3) -4 -2 (-4, -2)
divmod(-10, -3) 3 -1 (3, -1)

 

예시:

a, b = divmod(-10, 3)
print(f"divmod(-10, 3)의 몫: {a}, 나머지: {b}")
# 결과: divmod(-10, 3)의 몫: -4, 나머지: 2

c, d = divmod(10, -3)
print(f"divmod(10, -3)의 몫: {c}, 나머지: {d}")
# 결과: divmod(10, -3)의 몫: -4, 나머지: -2

참고: 파이썬의 나머지 연산 %은 항상 제수(나누는 수)의 부호를 따릅니다. 따라서 divmod(a, b)에서 반환되는 나머지 값의 부호는 $b$의 부호와 같습니다.

반응형

댓글