https://www.acmicpc.net/problem/11047
문제 해석
동전의 갯수와 구할 돈의 양을 입력 받은 후 동전의 가치를 차례대로 입력받는다.
그 후 동전을 사용하여 k값을 만든 최소한의 동전의 양을 구하는 문제이다.
코드
input = __import__('sys').stdin.readline
n, k = map(int, input().split())
arr = []
for _ in range(n):
arr.append(int(input()))
arr = arr[::-1]
ans = 0
i = 0
while k:
if k < arr[i]: i += 1
else:
ans += k // arr[i]
k %= arr[i]
i += 1
print(ans)
문제 풀이
먼저 가장 큰 가치의 동전부터 시작하여
동전의 가치만큼 나누어 ans 값에 더해주고
나누고 남은 값을 다시 k 값에 저장한 후 다시 k값을 다음 동전의 가치만큼 나누어 ans 값을 더해준다.이를 반복하면 결국 가장 최소로 사용하는 동전의 갯수를 구할 수 있다.
따라서 동전의 가치를 차례로 입력받은 후 이 배열을 거꾸로 뒤집은 후 반복문을 사용하여 차례로위의 알고리즘을 반복해 주어 문제를 해결했다.
원문
https://ddingmin00.tistory.com/23
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ/python] 1463번 1로 만들기 (0) | 2022.03.20 |
---|---|
[BOJ/python] 1978번 소수 찾기 (0) | 2022.03.13 |
[BOJ/python] 2023번 신기한 소수 (0) | 2022.02.27 |
[BOJ/python] 14247번 나무 자르기 (0) | 2022.02.14 |
[BOJ/python] 10989번 수 정렬하기 3 (0) | 2022.02.06 |