728x90
- 냅색문제를 연습하고 싶어 몇가지 풀어보았습니다.
- 전형적인 냅색문제지만 세준이의 HP가 0이되면 세준이가 인사를 하다 죽어버리므로 hp100일때 기준은 제외해 버립니다. (포함시키면 55가 출력됩니다)
- hp가 1기준일때 인사를 할 수있는 가능성부터 99일때 가능성을 구하여 최대 행복도를 구합니다.
import sys
N = int(sys.stdin.readline())
hp = [0] + list(map(int, sys.stdin.readline().strip().split()))
happy = [0] + list(map(int, sys.stdin.readline().strip().split()))
matrix = [[0] * 100 for _ in range(N+1)]
for i in range(1, N+1):
for j in range(1, 100):
hpD = hp[i]
happyG = happy[i]
if j < hpD:
matrix[i][j] = matrix[i - 1][j]
else:
matrix[i][j] = max(happyG + matrix[i - 1]
[j - hpD], matrix[i - 1][j])
print(matrix[-1][-1])
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 기능개발 - javascript (0) | 2022.02.14 |
---|---|
[프로그래머스] 다리를 지나는 트럭 - javascript (0) | 2022.01.27 |
[swjungle 2기] 그리디 알고리즘 (탐욕법) (0) | 2021.08.28 |
[swjungle 2기] 도둑! 배낭? Knapsack Problem(배낭문제, 냅색) (0) | 2021.08.27 |
[swjungle 2기] 백준 2617 구슬 찾기 (0) | 2021.08.24 |
댓글