IT/ps

백준 2240번 자두나무

u149_cinderella 2025. 3. 4. 16:04

대놓고 dp를 쓰라고 시킨다.

 

현재 위치를 따로 저장을 시키려고 했는데 그러면 상당히 어려워지므로 단순히 dp table의 값을 이용하기로 했다.

import sys
n,m=map(int,sys.stdin.readline().rstrip().split())
arr=[]
for _ in range(n):
	arr.append(int(sys.stdin.readline().rstrip()))	

v=[[0]*(m+1) for _ in range(n)]
v[0][0]=arr[0]%2
v[0][1]=arr[0]//2

for i in range(1,n):
	for j in range(m+1):
		if j%2==1:
			k=arr[i]//2
		else:
			k=arr[i]%2
		if j==0:
			v[i][j]=arr[i]%2+v[i-1][j]
			continue
		v[i][j]=max(v[i-1][j],v[i-1][j-1])+k
print(max(v[n-1]))