금고털이
2021. 9. 30. 13:27ㆍAlgorithm
- 목차
반응형
* items의 value가 높은것 부터 채워 넣어야 함
* 같은 value는 합침
* 합치고 sort하면 sort 시간이 감소함
* 혹은 최대 value 개수의 table을 만들고 value에 각 weight들을 합(이것 자체를 sorted array로 사용)
W, N = 100, 2 # capacity, num items
items = [
[90, 1], # weight, value
[70, 2]
]
weight_sums = collections.defaultdict(int)
for w, v in items:
weight_sums[v] += w
weight_sums = sorted(weight_sums.items(), key=lambda p: p[0], reverse=True)
tot = 0
for v, w in weight_sums:
if W >= w:
W -= w
tot += v*w
else:
tot += v*W
W = 0
break
print(tot)
반응형
'Algorithm' 카테고리의 다른 글
조립라인 (0) | 2021.10.06 |
---|---|
알고리즘: 바이러스 (0) | 2021.09.30 |
우물 안 개구리 (0) | 2021.09.29 |
알고리즘: 지도 자동 구축 (0) | 2021.09.28 |
GBC (0) | 2021.09.28 |