https://www.acmicpc.net/problem/11053
풀이
가장 긴 증가하는 부분 수열을 구하는 알고리즘을 LIS(Longets Increasing Subsequence) 알고리즘이라 부릅니다.
dp를 활용하여 문제를 풀어줍니다.
# 11053번 가장 긴 증가하는 부분 수열, Longest Increasing Subsequence
import sys
N = int(input())
nums = list(map(int, sys.stdin.readline().split()))
dp = [1] * N
for i in range(1, N):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
출력결과
'백준 > 다이내믹 프로그래밍' 카테고리의 다른 글
[백준][Python] 11055번 가장 큰 증가하는 부분 수열 - 코팩 (0) | 2023.08.04 |
---|---|
[백준][Python] 9465번 스티커 - 코팩 (0) | 2023.08.04 |
[백준] 16395번 파스칼의 삼각형 - 코팩 (0) | 2022.07.21 |
[백준] 15624번 피보나치 수 7 - 파이썬 (0) | 2022.07.20 |
[백준] 24416번 알고리즘 수업 - 피보나치 수 1 - 파이썬 (0) | 2022.07.20 |