반응형
문제설명
https://www.acmicpc.net/problem/11722
사고과정
- 가장 긴 증가하는 부분 수열을 찾는 LIS 알고리즘을 이용하되 주어진 배열을 reverse 해서 LIS를 적용하거나 LIS 알고리즘 내부의 부등호를 반대로 바꾸어주면 된다.
- 예전에도 관련 문제를 풀어봐서 수월히 해결했다.
풀이
n = int(input())
array = list(map(int, input().split()))
array.reverse()
dp = [1] * n
for i in range(1, n):
for j in range(i-1, -1, -1):
if array[i] > array[j]:
dp[i] = max(dp[i], dp[j] + 1)
print(max(dp))
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[BOJ] 13398번 - 연속합 2 (0) | 2021.11.02 |
---|---|
[BOJ] 11054번 - 가장 긴 바이토닉 부분 수열 (0) | 2021.11.01 |
[BOJ] 11055번 - 가장 큰 증가 부분 수열 (0) | 2021.11.01 |
[BOJ] 2156번 - 포도주 시식 (0) | 2021.11.01 |
[BOJ] 9465번 - 스티커 (0) | 2021.10.31 |