Category
프로그래밍  PS

[백준 / python] 22115: 창영이와 커피

2024년 11월 10일 by Hwang

https://www.acmicpc.net/problem/22115

문제

창영이는 커피를 좋아한다. 회사에 도착한 창영이는 아침 커피를 즐기려고 한다.

회사에는 N개의 커피가 각각 하나씩 준비되어 있고, 각 커피에는 카페인 함유량 Ci가 있다.

창영이는 N개의 커피 중 몇 개를 골라 정확히 K만큼의 카페인을 섭취하려고 한다.

창영이가 정확히 K만큼의 카페인을 섭취하기 위해서는 최소 몇 개의 커피를 마셔야 할까?

입력

첫째 줄에 커피의 개수 N, 창영이가 섭취해야 하는 카페인의 양 K가 주어진다.

둘째 줄에 N개 커피의 카페인 함유량 Ci가 주어진다.


풀이

배낭 문제

import sys

N, K = map(int, sys.stdin.readline().split())
coffees = list(map(int, sys.stdin.readline().strip().split()))

dp = [[sys.maxsize if i != 0 else 0 for i in range(K+1)]
      for _ in range(N+1)]

for i in range(1, N + 1):
    caffeine = coffees[i-1]
    for j in range(1, K + 1):
        dp[i][j] = dp[i-1][j]
        if j < caffeine:
            continue
        if dp[i-1][j-caffeine] != sys.maxsize:
            dp[i][j] = min(dp[i][j], dp[i-1][j-caffeine] + 1)

if dp[-1][K] == sys.maxsize:
    print(-1)
else:
    print(dp[-1][K])


 Comment