알고리즘

[백준 11047] 동전 0 - 파이썬

Codult 2024. 1. 20. 12:16
728x90

백준 11047


 

풀이과정

Think! 그리디 알고리즘에 따라, 최적이라고 생각되는 해를 선택한다. 지불하는 동전의 갯수를 최소로 하려면, 가장 큰 단위의 동전을 우선 사용해야 한다.

 

1) N, K를 입력받는다.

2) N번 동안 동전의 가치를 입력받아, 리스트에 저장한다.

3) for문을 이용하여 오름차순으로 저장된 리스트의 가장 끝 인덱스에 위치한 동전부터 사용한다.

4) 동전의 가치가 남아있는 금액(K)보다 작거나 같을 때, 해당 동전을 사용할 수 있으므로 if 조건문을 걸어준다.

5) 조건을 만족시킨다면, K를 동전 가치로 나눈 몫 만큼 동전 갯수를 추가한다.

6) K를 동전 가치로 나눈 나머지가 남아있는 금액(K)이 된다. 

7) 반복문이 종료되면, 최종 동전 갯수를 출력한다.

 

N, K = map(int, input().split())
coins = []
cnt = 0

# 입력받은 동전 가치를 리스트에 저장
for i in range(N):
    coins.append(int(input()))

# 가장 큰 가치의 동전부터 사용한다.
for j in range(N-1, -1, -1):
    # 남아있는 금액보다 동전의 가치가 작거나 같을 때, 지불 가능
    if K >= coins[j]:
        cnt += K//coins[j]
        K = K%coins[j]

print(cnt)
728x90

'알고리즘' 카테고리의 다른 글

에라토스테네스의 체  (0) 2024.01.22
[백준 11726] 2xn 타일링 - 파이썬  (1) 2024.01.21
[백준 1316] 그룹 단어 체커 - 파이썬  (0) 2024.01.20
그리디 알고리즘  (0) 2024.01.19
탐색(2): 이진 탐색  (0) 2024.01.19