본문 바로가기
백준 풀이

[백준/BOJ] - 1965번 python 풀이 - dp

by 반오십 코린이 2023. 3. 9.
728x90


1. 박스의 크기가 담겨져 있는 배열인 arr 배열, dp 정보가 담겨져 있는 dp 배열을 분리하자.

2. 반복문에서 index i에 해당하는 박스 = arr[i] 보다 이전에 있는 값이 작은 경우 중에서 dp값의 max 값 + 1 한 것이 현재 i의 dp 값이다.

3. 모든 반복문이 끝난 후 dp에서 최댓값을 출력하면 종료


import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int,input().split()))
dp = [1]
maxi = 0
for i in range(1,n): #i = 1, j = 0 // i = 2, j = 0,1
    for j in range(i):
        if arr[i] > arr[j]:
            maxi = max(maxi, dp[j])
    dp.append(maxi+1)
    maxi = 0
print(max(dp))

 

728x90