Skip to content

Commit 10d6ae1

Browse files
committed
AC(48ms): #dp(top-down) O(CN)
1 parent ebe56c2 commit 10d6ae1

File tree

2 files changed

+38
-27
lines changed

2 files changed

+38
-27
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# 호텔
2+
3+
import sys
4+
5+
6+
MAX_C = 1000
7+
8+
C, N = map(int, sys.stdin.readline().split())
9+
group_cost = [None] * N
10+
group_size = [None] * N
11+
for i in range(N):
12+
group_cost[i], group_size[i] = map(int, sys.stdin.readline().split())
13+
14+
15+
def cache_via_list(func):
16+
CACHE = [None] * (2*MAX_C+1) # -C ~ C 범위를 커버
17+
18+
def wrapper(c):
19+
nonlocal CACHE
20+
if CACHE[c] is None:
21+
CACHE[c] = func(c)
22+
return CACHE[c]
23+
return wrapper
24+
25+
26+
@cache_via_list
27+
def find_min_price(c: int) -> int:
28+
"""c명의 고객을 유치하기 위해 투자해야할 최소 금액"""
29+
if c <= 0:
30+
return 0
31+
return min(
32+
find_min_price(c - group_size[i]) + group_cost[i]
33+
for i in range(N)
34+
)
35+
36+
37+
sys.setrecursionlimit(10 * C)
38+
print(find_min_price(C))

2주차 Knapsack/김동주/boj_1106_1d.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)