금고털이

2021. 9. 30. 13:27Algorithm

    목차
반응형

 

* 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