728x90
https://www.acmicpc.net/problem/11053
11053번: 가장 긴 증가하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
DP문제로 연속합과 비슷하게 가장 길게 증가하는 부분의 길이를 dp로 저장해 풀어나가는 방식이다.
DP에 저장하기까지 생각이 꽤 오래걸렸다. 공부를 더 해야겠다.
n = int(input())
arr = list(map(int, input().split()))
dp = [1] * (n+1)
for i in range(1, n):
for j in range(i):
if arr[i] > arr[j]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
완성
728x90
'알고리즘' 카테고리의 다른 글
[백준] 15894번: 수학은 체육과목 입니다 - python (0) | 2024.04.01 |
---|---|
[백준] 11055번: 가장 큰 증가하는 부분 수열 - python (0) | 2024.04.01 |
[백준] 1912번: 연속합 - python (0) | 2024.03.30 |
[백준] 2193번: 이친수 - python (1) | 2024.03.29 |
[백준] 11000번: 강의실 배정 - python (0) | 2024.03.28 |