본문 바로가기
코딩테스트/그리디

[python] 백준 11047번: 동전 0

by brown_board 2023. 1. 28.
728x90

https://www.acmicpc.net/user/gurwns876

 

gurwns876 정보

시도했지만 맞지 못한 문제

www.acmicpc.net

 

동전 거스름 돈 문제는 그리디 알고리즘에서 유명한 문제이다.

1. 문제 해석
1) 각 동전이 다음 동전이 될 때 n의 배수이므로 큰 숫자부터 차례대로 나누면 된다.
2) 이때 총합 k를 구할 때 동전의 갯수를 구하면 된다.

2. 풀이
1. 동전이 n의 배수이므로 그리디 알고리즘을 사용하면 된다.
2. 처음부터 큰 숫자를 나눈 다음, 몫을 answer에 더하고 나머지를 k에 다시 대입하여 해결한다.
(동전의 n의 배수가 아닐 때는 그리디 알고리즘을 사용하면 안된다. 이 문제도 추후에 풀어보자)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
#sys.stdin = open("input6.txt",'r')
input = sys.stdin.readline
 
n, score = map(int,input().split())
coin_lst = []
for i in range(n):
    coin_lst.append(int(input()))
coin_lst.sort(reverse=True)
 
answer = 0
#각 코인을 나눴을 때 몫이 answer, 나머지가 남은 돈이 된다.
for coin in coin_lst:
    if score >= coin:
        answer += score//coin #몫만큼 더해주기
        score = score%coin #나머지가 거스름돈
        if score <= 0#0이 되면 반복문 탈출
            break
print(answer)
cs

코테 문제를 매일 안풀다보니 풀때마다 느낌이 새롭다... 간단한 문제라도 1일 1문제는 풀어야겠다.

728x90

'코딩테스트 > 그리디' 카테고리의 다른 글

[python] 백준 11399번: ATM  (0) 2023.01.30
그리디 문제 모음  (0) 2023.01.26
<PART 2> 그리디 예제  (0) 2022.09.28

댓글