문제
https://www.acmicpc.net/problem/11053
풀이
LIS 라는 DP문제이다.
(LIS 알고리즘에 대한 내용은 추후 블로그에 업로드 예정)
dp리스트에 현재 자신 숫자를 포함해 만들 수 있는 부분 수열 크기를 저장한다.
numList | 10 | 20 | 10 | 30 | 20 | 50 |
dp | 1 | 2 | 1 | 3 | 2 | 4 |
n = int(input())
numList = list(map(int, input().split()))
lenNum = len(numList)
dp = [1] * lenNum
for i in range(lenNum):
for j in range(i):
if numList[j] < numList[i]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
'Problem Solving > CT-Python' 카테고리의 다른 글
[SWEA/DFS-BFS] 5215[D3]: 햄버거 다이어트 - 파이썬 (0) | 2022.05.25 |
---|---|
[백준/DP] 1463: 1로 만들기 - 파이썬 (0) | 2022.05.24 |
[SWEA/구현] 10570[D3]: 제곱 팰린드롬 수 - 파이썬 (0) | 2022.05.23 |
[프로그래머스/완전탐색] L2: 카펫 - 파이썬 (0) | 2022.05.20 |
[백준/구현] 13904: 과제 - 파이썬 (0) | 2022.05.18 |