[python 파이썬] 백준 1535번 안녕
2021. 2. 9. 00:10ㆍAlgorithm/BOJ
반응형
#틀림
n=int(input())
power=99
L=list(map(int,input().split()))
J=list(map(int,input().split()))
knapsack=[[0 for _ in range(power+1)] for _ in range(n+1)]
# print(knapsack)
for i in range(n):
for j in range(power+1):
if j<=L[i]:
# knapsack[i][j]=max(knapsack[i-1][j],knapsack[i-1][j-L[i]]+J[i])
else:
# knapsack[i][j]=knapsack[i-1][j]
knapsack[i][j]=max(knapsack[i-1][j],knapsack[i-1][j-L[i]]+J[i])
print(knapsack)
n=int(input())
L = list(map(int, input().split())) # 잃는 체력을 저장하는 리스트
L.insert(0, 0) # 순서의 헷갈림 방지를 위한 0번째 원소에 0 삽입
J = list(map(int, input().split())) # 얻는 기쁨을 저장하는 리스트
J.insert(0, 0)
K = [[0 for col in range(101)] for row in range(21)]
def knapsack(n, m, weight, price): #knapsack 알고리즘 함수
for i in range(1, n+1):
for j in range(1, m+1):
if weight[i] > j:
K[i][j] = K[i-1][j]
else:
K[i][j] = max(K[i-1][j-weight[i]] + price[i], K[i-1][j])
#MAX(현재 보석들의 가치+ 남은 가방 크기 만큼 나머지 보석을 넣을 때 최대 가치, 이전까지 구해둔 보석들의 가치)
#처음의 경우엔 MAX(가방에 들어있던 보석(1)을 빼고, 보석(2)을 넣을때의 가치, 이전 보석(1)의 가치)
return K[n][m]
print(knapsack(n, 99, L, J))
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[python 파이썬] 백준 11659번 구간합구하기 4 (0) | 2021.02.15 |
---|---|
[python 파이썬] 백준 12865번 평범한 배낭 (0) | 2021.02.09 |
[python 파이썬] 백준 1739번 타일링 (0) | 2021.02.05 |
[python 파이썬] 백준 2565번 파이썬 (0) | 2021.02.05 |
[python 파이썬] 백준 1965번 상자넣기 (0) | 2021.02.02 |