π λμ 2
νμ΄
κ° κ°λ§λ€ νμν μ΅μμ μ½μΈ κ°―μλ₯Ό μ μ₯ν dp λ°°μ΄ νμ
- λ°μ΄ν°λ€μ 1μ°¨μ λ°°μ΄μ λ΄λλ€.
- μ΅μ μ½μΈ κ°―μλ₯Ό μ μ₯ν dpλ°°μ΄μ λ§λ€κ³ max(10001)μΌλ‘ μ΄κΈ°νμμΌμ€λ€.
- μ½μΈ λ°°μ΄μ κ°μ κ°μ Έμ€κ³
- κ·Έ κ°λ§νΌ μ¬λ¦¬λ©΄μ forλ¬Έμ λμμ£Όλλ°
- νμ¬ κ°μμ κ°μ Έμ¨ μ½μΈ κ°μ λΉΌμ£Όμμ λμ μ½μΈ μ¬μ© κ°μμ μ§κΈ μ½μΈ κ°μ νλλ₯Ό λν κ°κ³Ό μ΄μ μ½μΈλ€λ‘λ§ μ‘°ν©νμ λ μ¬μ©λ μ½μΈ κ°μλ₯Ό λΉκ΅νμ¬ λ μμ κ°μ dpλ°°μ΄μ λ΄λλ€.
μ½λ
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
li =[]
for i in range(n):
li.append(int(input()))
dp = [10001] * (k+1)
dp[0] = 0
for num in li:
for i in range(num, k+1):
dp[i] = min(dp[i],dp[i-num]+1)
if dp[k] == 10001:
print(-1)
else:
print(dp[k])