https://www.acmicpc.net/problem/1496
1496번: 기타 고르기
첫째 줄에 기타의 개수 N이 주어진다. 기타의 개수는 50보다 작거나 같으며, 2보다 크거나 같은 자연수이다. 둘째 줄에 기타의 가치가 주어진다. 기타의 가치는 공백을 사이에 두고 구분해서 순서
www.acmicpc.net
dp문제
초기에 max값과 min값만을 의존하여 dp를 접근하였는데 실패..
모든 값에 대한 경우를 대비시켜줘야 됬던것!
문제에서 주어진 볼륨값을 index로 둔 뒤, 가장 큰 볼륨을 뽑으면 해결
import sys
input = sys.stdin.readline
n, s, m = list(map(int,input().split()))
arr = list(map(int,input().split()))
dp = [[0]*(m+1) for _ in range(n+1)]
dp[0][s] = 1
for i in range(1,n+1):
for j in range(m+1):
if dp[i-1][j] !=0:
if 0<= j + arr[i-1] <=m:
dp[i][j+arr[i-1]] = 1
if 0<=j - arr[i-1] <=m:
dp[i][j-arr[i-1]] = 1
result = -1
for i in range(m,-1,-1):
if dp[n][i] ==1:
result = i
break
print(result)
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 12931: 두 배 더하기 (0) | 2023.02.10 |
---|---|
[파이썬]baekjoon 16198: 에너지 모으기 (0) | 2023.02.09 |
[파이썬]baekjoon 14719: 빗물 (0) | 2023.02.07 |
[파이썬]baekjoon 12919: A와 B 2 (2) | 2023.01.22 |
[파이썬]baekjoon 1149: RGB거리 (0) | 2023.01.21 |
댓글