BOJ - 11053

주의·2024년 1월 31일
0

boj

목록 보기
155/214

백준 문제 링크
가장 긴 증가하는 부분 수열

❓접근법

  1. 수열은 1개 이상 선택할 수 있으므로
    DP = [1] * N 으로 만든다.
  2. 조건은 다음과 같다.
  • for i in range( 1, N ):
    • for j in range( i ):
      • if data[i] > data[j]:
        • DP[i] = max(DP[i], DP[j] + 1)
  1. 수열이 [10, 30, 20, 30]이 있을 때,
    DP = [1, 1, 1, 1] 에서
    DP = [1, 2, 2, 3]으로 바뀐다.
  2. DP의 최댓값을 출력하면 끝!

👌🏻코드

N = int(input())

data = list(map(int, input().split()))

DP = [1] * N

for i in range(1, N):
    
    for j in range(i):
        if data[i] > data[j]:
            DP[i] = max(DP[i], DP[j] + 1)
            
print(max(DP))

0개의 댓글