< 문제 >
< 입출력 >
< 풀이 >
각 인덱스 별로 앞의 수보다 다음 수가 작을 경우 1씩 올려준다.
dp를 이용하여 dp[i]에 인덱스 i까지 가장 긴 감소하는 부분 수열의 길이를 저장한다.
< 코드 >
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[j] > arr[i]:
dp[i] = max(dp[i],dp[j]+1)
print(max(dp))
'코딩 테스트 > 다이나믹 프로그래밍' 카테고리의 다른 글
[백준 1965번] 상자 넣기 문제풀이 (with Python) (0) | 2023.08.24 |
---|---|
[백준 10844번] 쉬운 계단 수 문제풀이 (with Python) (0) | 2023.08.23 |
[백준 11049번] 행렬 곱셈 순서 문제 풀이 (0) | 2023.08.21 |
[백준 2579번] 계단 오르기 문제 풀이 (0) | 2023.08.02 |
[백준 15486번] 동전 1 문제풀이 (0) | 2023.08.01 |
댓글