[Python]알고리즘/백준
[다이나믹 프로그래밍] 11722번 - 가장 긴 감소하는 부분 수열
HSY_mumu
2022. 4. 23. 15:00
728x90
[백준] 11722번 - 가장 긴 감소하는 부분 수열
(한줄평) LIS 알고리즘을 알면 쉽게 풀 수 있었던 문제!
유사 문제: 11053, 11054
https://hseungyeon.tistory.com/304
[다이나믹 프로그래밍] ▲ 11053번 - 가장 긴 증가하는 부분 수열
[백준] 11053번 - 가장 긴 증가하는 부분 수열 (한줄평) 풀었던 문제지만 다시 풀려니 기억이 잘 안나서 어려웠던 문제.. 꼭 복습이 필요하다!!! 풀이 시간: 30분 이내 유사 문제: https://hseungyeon.ti
hseungyeon.tistory.com
https://hseungyeon.tistory.com/305
[다이나믹 프로그래밍] 11054번 - 가장 긴 바이토닉 부분 수열
[백준] 11054번 - 가장 긴 바이토닉 부분 수열 (한줄평) LIS 응용 문제로 LIS(최장증가부분수열)알고리즘을 안다면 쉽게 풀 수 있었던 문제! 풀이 시간: 15분 이내 1) 문제 해결 아이디어 n이 1이상
hseungyeon.tistory.com
풀이 시간: 5~10분 이내
1) 문제 해결 아이디어
1이상 1000이하의 크기인 수열 A가 주어졌을 떄 수열 A의 가장 긴 감소하는 부분 수열의 길이를 구하는 문제다. 11053번 가장 긴 증가하는 부분 수열의 길이를 구하는 문제에서 조건을 반대로 설정해주면 된다.
<점화식>
2) 소스코드
import sys
input = sys.stdin.readline
n = int(input()) # 수열 크기(1이상 1000이하 자연수)
graph = list(map(int, input().split())) # 크기 n인 수열
d = [1] * n
for i in range(1, n):
for j in range(i):
# i번째 값보다 큰 수에서 최댓값 갱신
if graph[j] > graph[i]:
d[i] = max(d[i], d[j] + 1)
print(max(d))
728x90