문제📖
![](https://velog.velcdn.com/images%2Fcosmos%2Fpost%2F3c9c8cd6-12f3-46aa-b146-303cbe09c4bd%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-22%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.05.10.png)
풀이🙏
- 첫째 줄에 수열 A의 크기 N이 주어진다.
- 둘째 줄에는 수열 A를 이루고 있는 A(i)가 주어진다.
- 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력하라.
- DP 알고리즘 문제이다.
- DP 문제이므로 처음에 배열을 선언해준 뒤, 가장 긴 증가하는 부분 수열의 길이를 출력하는 문제이므로
max(dp)
를 사용하면 된다.
이중 for문
+ if 조건문
으로 구현하였다.
코드💻
import sys
def DP(A):
for i in range(N):
for j in range(i):
if all((A[i] > A[j], d[i] < d[j])):
d[i] = d[j]
d[i] += 1
return max(d)
N = int(sys.stdin.readline())
A = list(map(int, input().split()))
d = [0] * N
print(DP(A))
결과😎
![](https://velog.velcdn.com/images%2Fcosmos%2Fpost%2Ff3ac25b8-4360-49a6-87d8-c37ae678a740%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-22%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.47.54.png)
출처 && 깃허브📝
https://www.acmicpc.net/problem/11053
github