본문 바로가기
코딩테스트 파이썬/백준

평범한 배낭 (12865 번)

by 세용용용용 2025. 2. 1.

12865번: 평범한 배낭

 

나의 풀이

import sys

def _main(k, items):
    answer = [0] * k
    for w, v in items:
        for j in range(k-1, w-2, -1):
            if (j == (w - 1)):
                answer[j] = max(answer[j], v)
            else:
                answer[j] = max(answer[j], answer[j - w] + v)
    return max(answer)

n, k = map(int, sys.stdin.readline().rstrip().split())
items = [tuple(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n)]
print(_main(k, items))

 

시간 복잡도

for w, v in items : 배낭 갯수 만큼 순회 ( 선형 시간 복잡도 )
    for j in range(k-1, w-2, -1) : 가능한 무게만큼 순회 ( 선형 시간 복잡도 )
해당 알고리즘 시간 복잡도 : 이차형 시간 복잡도 ( O(n ** 2) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

미세먼지 안녕! ( 17144번 )  (0) 2025.02.09
가장 긴 바이토닉 부분 수열 ( 11054번 )  (0) 2025.02.03
내려가기 ( 2096번 )  (1) 2025.01.24
최소비용 구하기 ( 1916 )  (0) 2025.01.20
학번( 3711번 )  (0) 2025.01.15