PS

[BOJ] Python 백준 상자넣기(1965)

1223v 2024. 11. 26. 17:14

https://www.acmicpc.net/problem/1965

 

 

부분 수열 dp 문제와 매우 유사한 문제이다. 제일 긴 부분 수열 문제처럼 dp 테이블에 1씩 더해주면서 값을 늘려주고 최댓값을 찾으면 된다. 하지만, 마지막 본인 수까지 포함해야함으로 마지막에 max값에 +1을 해준다.

import sys
input  = sys.stdin.readline

N = int(input())
s = list(map(int,input().split()))
dp = [0] * N
for i in range(N):
    for j in range(i):
        if s[j] < s[i]:
            dp[i] = max(dp[i], dp[j] + 1)



print(max(dp)+1)

 

회고.

부분 수열문제를 최근에 풀어 바로 풀 수 있었던것 같다. 만약 2개월 지난 후 본다면 풀 수 있을까 의문이다...