문제.
풀이.
첫번째 위치부터 수열의 길이의 최댓값을 저장하고
자기 자신보다 작은 숫자들 중 가장 큰 길이를 자기 위치에 넣고 +1을 하고 dp의 최댓값을 출력하면 된다.
소스코드.
import sys
A = int(sys.stdin.readline())
seq = list(map(int, sys.stdin.readline().split()))
dp = [0] * A
for i in range(A):
for j in range(i):
if seq[i] > seq[j] and dp[i] < dp[j]:
dp[i] = dp[j]
dp[i] += 1
print(max(dp))
'프로그래밍 > 백준' 카테고리의 다른 글
백준 2565 전깃줄 - 파이썬 (0) | 2021.07.19 |
---|---|
백준 11054 가장 긴 바이토닉 부분 수열 - 파이썬 (0) | 2021.07.19 |
백준 2156 포도주 시식 - 파이썬 (0) | 2021.07.14 |
백준 11444 피보나치 수 6 - 파이썬 (0) | 2021.07.14 |
백준 11401 이항 계수 3 - 파이썬 (0) | 2021.07.14 |