편집 시간: 2022년 3월 30일 오후 10:05

코드

Algorithm/1202.py at main · Junroot/Algorithm

풀이

담을 수 있는 무게가 작은 가방부터 담으면서, 가방이 담을 수 있는 보석 중에 가장 가치가 높은 보석을 담으면 된다는 것을 알 수 있었다. 다음 가방으로 넘어가면서 앞에서 사용한 보석을 빼고 그 중 가치가 가장 높은 보석을 찾는 방식으로 구현하면 됐다.

이 과정에서 가장 높은 가치를 계속 찾아야되기 때문에 우선순위 큐를 사용했다.

다른 사람 풀이

보석의 정렬을 더 빠르게 하는 방법이 있었다. 카운팅 정렬을 응용한 방식으로 보였다.

mass = [[] for _ in range(max_mass+1)]

for _ in range(N):
    M, V = map(int, sys.stdin.readline().split())
    mass[M].append(V)