백준2294(파이썬) - 동전2
resilient
·2021. 5. 4. 02:03
728x90
반응형
2294번: 동전 2
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주
www.acmicpc.net
import sys
input = sys.stdin.readline
# 이문제는 그리디쓰면 안된다.
n,k = map(int,input().split())
numbers = []
#dp를 만들어준다.
dp = [10001 for _ in range(k+1)]
#0원 만드는건 0개이다.
dp[0] = 0
for _ in range(n):
numbers.append(int(input()))
numbers.sort()
for i in range(len(numbers)):
for j in range(numbers[i],k+1):
dp[j] = min(dp[j],dp[j-numbers[i]]+1) #핵심코드
#이전 동전으로만 i원을 만들때 랑 지금 동전까지 써서 만들 때
print(dp[-1] if dp[-1] != 10001 else -1)
그리디는 예시를 보고 바로 알았으나
DP는 정말 생각하는게 어려운거같다.
앞으로 DP는 꼭 무조건 다써보고 표 형식으로 정리해본뒤에 공통점을 파악하고 앞에 부분에서 따오는형식(이게 디피의 정의이다..) 을 사용해야겠다
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준1931(파이썬) - 회의실 배정 (0) | 2021.05.06 |
---|---|
백준15686(파이썬) - 치킨 배달 (0) | 2021.05.04 |
백준 2293(파이썬) - 동전1 (0) | 2021.05.03 |
백준14888(파이썬) - 연산자 끼워넣기 (0) | 2021.05.02 |
백준1927(파이썬) - 최소 힙 (0) | 2021.05.01 |