문제출처
https://www.acmicpc.net/problem/11053
문제를 스스로 해결하였는가? -> X
한 번 풀었던 적 있는 문제다. 한번 푼 문제는 다시 안푸는 성격인데 11055번(가장 큰 증가 부분 수열)문제랑 거의 똑같아 보여서 복습할 겸 다시 풀었다. 근데 또 못풀었다... 비슷한 응용문제가 많은거 같은데 다음엔 까먹지 말고 제대로 풀자.
사용되는 알고리즘
- dp
풀이 전략
다음과 같은 방식으로 dp값을 계산하면 된다. dp[i]는 0부터 i번째까지 배열 중 A[i]를 포함한 가장 긴 증가하는 부분 수열의 길이를 의미한다.
전체코드
n = int(input())
A = list(map(int, input().split(' ')))
dp = [1]*n
for i in range(n):
tmp = []
for j in range(i):
if A[j] < A[i]:
tmp.append(dp[j])
if len(tmp)!=0:
dp[i] = max(tmp) + 1
print(max(dp))
'알고리즘 (Python) > 백준' 카테고리의 다른 글
[백준 1107번][골드5] 리모컨 (파이썬) (0) | 2022.08.17 |
---|---|
[백준 11055번][실버2] 가장 큰 증가 부분 수열 (파이썬) (0) | 2022.08.17 |
[백준 14501번][실버3] 퇴사 (파이썬) (0) | 2022.08.16 |
[백준 1011번][골드5] Fly me to the Alpha Centauri (파이썬) (0) | 2022.08.15 |
[백준 12865번][골드5] 평범한 배낭 (파이썬) (0) | 2022.08.15 |
댓글