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
범위가 좁아서 간단한 바텀업 디피로 풀어봤습니다.
반복문 두개 써서 시간 복잡도는 O(N^2) 일듯
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
dp = [1 for i in range(n)]
for i in range(n):
for j in range(i):
if arr[i] > arr[j]:
dp[i] = max(dp[i], dp[j] + 1)
print(max(dp))
|
cs |
728x90
'PS > 백준' 카테고리의 다른 글
[백준 4344번 ] 평균은 넘겠지 (파이썬/python) (0) | 2021.06.14 |
---|---|
[백준 2493번 ] 탑 (파이썬/python) (0) | 2021.06.12 |
[백준 17135번] 캐슬 디펜스 c++ (0) | 2021.05.18 |
[백준 17406번] 배열 돌리기 4 c++ (0) | 2021.05.16 |
[백준 17471번] 게리맨더링 C++ (0) | 2021.05.16 |