반응형

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$의 부호와 같습니다.
반응형
'IT > Python Basic' 카테고리의 다른 글
| [Python] 특수 변수 "__main__": 완전 쉽게 이해하기 (0) | 2025.11.12 |
|---|---|
| [Python] 초급 퀴즈27 - 2차원 배열 (0) | 2025.04.14 |
| [Python] 초급 개념27 - 2차원 배열의 이해 (1) | 2025.04.14 |
| [Python] 초급 개념11+ - 문자열 출력과 조작 특집 (0) | 2025.03.31 |
| [Python] 특집 - 십진수와 이진수 변환 (0) | 2025.03.21 |
| [Python] 특집 - lambda 함수 활용법 (0) | 2025.03.19 |
| [python] 파이썬 isdigit() 함수 완벽 가이드 (0) | 2025.03.19 |
| [Python] 특집 - range() 함수로 리스트 다루기 (0) | 2025.03.18 |
댓글