일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 레디스
- linux
- 다이나믹프로그래밍
- 코딩테스트
- java
- 카카오페이면접후기
- 카카오페이
- 백준
- 정보보안
- 딥러닝
- t검정
- 우선순위큐
- springboot
- t-test
- 시간초과
- 데이터사이언스
- 파이썬
- synflooding
- Python
- lightsail
- 프로그래머스
- 그리디
- 리눅스
- LangChain
- FastAPI
- 분산시스템
- 보안기사
- 보안
- 자료구조
- 정보보안기사
Archives
Techbrad
[백준] 거스름돈 파이썬 본문
반응형
문제 접근
큰 단위의 거스름돈으로 먼저 최대한 바꿔줄 수 있는 수량을 파악해야했다. 거스름돈 종류는 이미 순차적으로 제공되었다.
알고리즘
그리드 알고리즘
풀이 과정
cnt = 0
price = int(input())
change = 1000 - price
money = [500, 100, 50, 10, 5, 1]
while change > 0:
for m in money:
if (change // m) > 0:
cnt += 1
change = change - m
else:
continue
이렇게 코딩을 처음에 했으나 제대로 된 답이 나오지 않았다. 원인은 for 루프를 통해 무조건 cnt 를 +1 씩 올리는 것 때문이다. 예를 들어 거스름돈이 50원이고 10원으로 5개로 나누어 주면 되는데 cnt +1 올리고 다음 5원으로 넘어가니 cnt가 많이 추가된다. 따라서 아래와 같이 코드를 바꿨다.
cnt = 0
price = int(input())
change = 1000 - price
money = [500, 100, 50, 10, 5, 1]
for m in money:
cnt += change // m
change = change % m
루프는 1회만 돌며 큰 단위서 부터 최대한 바꿔줄 수 있도록 하였다.
반응형
'Programming > 코딩테스트' 카테고리의 다른 글
[백준] 2828번 사과 담기 게임, 그리디알고리즘 파이썬 (0) | 2023.09.02 |
---|---|
[백준] 전자레인지 파이썬 (0) | 2023.09.01 |
[백준] 루프 파이썬 (0) | 2023.08.31 |
백준 음계 코딩테스트 (0) | 2022.09.01 |
[Python] heqpq를 이용한 힙(heap)자료구조 (0) | 2022.03.01 |