평범한 dynamic programming 문제이다.
n,k=map(int,input().split())
coindata=[]
for _ in range(n):
coindata.append(int(input()))
coindata.sort()
values=[0 for _ in range(k+1)]
values[0]=1
for i in coindata:
for j in range(1,k+1):
if j-i>=0:
values[j]+=values[j-i]
print(values[k])
0원부터 k원까지 개수를 셀 수 있는 리스트를 만들고,
거기에 1월부터 k원까지 가능한 개수를 모두 센다.
반복문에서,
현재 돈의 크기에 (현재 돈 - 동전의 크기)일 때의 개수를 더해준다.
'Computer Science > Algorithm' 카테고리의 다른 글
BOJ 2805: 나무 자르기 [Python 3] (0) | 2023.01.06 |
---|---|
BOJ 1931: 회의실 배정 [Python 3] (0) | 2023.01.05 |
BOJ 9466: 텀 프로젝트 [Python 3] (0) | 2023.01.05 |
BOJ 1644: 소수의 연속합 [Python 3] (0) | 2022.12.30 |
BOJ 10951: A+B -4 [Python 3] (0) | 2022.12.30 |