백준 11053번 python 풀이 - 가장 긴 증가하는 부분 수열
문제 링크
해결책
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
num_list = []
N = int(sys.stdin.readline())
num_list = list(map(int, sys.stdin.readline().split()))
dp = [1 for j in range(N+1)]
ans = []
for i in range(1, N):
for j in range(i):
if num_list[i] > num_list[j]:
dp[i+1] = max(dp[i+1], dp[j+1] + 1)
print(max(dp))
주석으로 달 설명
DP. 너무나 열받는 문제. 계속 시작지점을 i값으로 생각하던 것이 문제였다.
i의 값을 가장 긴 수열의 마지막으로 생각하면 금방 해결할 수 있다.
이런식의 분할은 도대체 뭘 떠올려야 할까?
This post is licensed under CC BY 4.0 by the author.