For Programmer
백준 11055번 파이썬 문제풀이(가장큰 증가 부분 수열) - DP(탑다운) 본문
728x90
현재 고른 위치와 전에 고른 위치를 dp에 저장해서 다음번에 도착시 해당 dp에 저장된 값을 리턴하도록 코드를 구현했다.
import sys
sys.setrecursionlimit(10000)
N = int(input())
arr = list(map(int, input().split())) + [0]
dp = [[-1] * (N + 1) for _ in range(N + 1)]
def recur(cur, pre):
if cur >= N:
return 0
if dp[cur][pre] != -1:
return dp[cur][pre]
if arr[cur] > arr[pre]:
dp[cur][pre] = max(recur(cur + 1, cur) + arr[cur], recur(cur + 1, pre))
else:
dp[cur][pre] = recur(cur + 1, pre)
return dp[cur][pre]
print(recur(0, -1))
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 2698번 파이썬 문제풀이(인접한 비트의 개수) - DP(탑다운) (0) | 2022.04.11 |
---|---|
백준 2565번 파이썬 문제풀이(전깃줄) - DP(탑다운) (0) | 2022.04.11 |
백준 2600번 파이썬 문제풀이(구슬게임) - DP(탑다운) (0) | 2022.04.10 |
백준 20951번 파이썬 문제풀이(유아와 곰두리차) - DP(탑다운) (0) | 2022.04.10 |
백준 1149번 파이썬 문제풀이(RGB거리) - DP(탑다운) (0) | 2022.04.07 |
Comments