반응형
DP 좋은 문제 추천
문제
https://www.acmicpc.net/problem/11722
풀이
a : [10, 30, 10, 20, 20, 10]
처음엔 if a[j] > a[i] : dp[i] = dp[j] + 1 로 풀었다. a[i] 보다 큰 것만 찾아서 +1 하다보니 맨 오른쪽 10의 경우, 20을 중복으로 더해서 원하는 답이 나오지 않았다.
이걸 어떻게 해결할까 고민하다가 max 로 풀긴했는데 손으로 일일히 for문을 돌려가면서 이해한거라 자존심 상한다. 아니 잘하는 사람들은 머리 속에서 다 돌아가려나? 곧 따라잡아드림!
n = int(input())
a = list(map(int,input().split()))
dp=[1 for _ in range(n)]
for i in range(n):
for j in range(i):
if a[j]>a[i]:
dp[i] = max(dp[j]+1, dp[i])
print(max(dp))
반응형
'코딩테스트 > 백준문제' 카테고리의 다른 글
[python 파이썬] 백준 1520번 내리막 길 (0) | 2020.08.06 |
---|---|
[python 파이썬] 백준 15486번 : 퇴사2 (0) | 2020.08.04 |
[python 파이썬] 백준 11726번 : 2 x n 타일링 (0) | 2020.08.04 |
[python 파이썬] 백준 2579번 : 계단 오르기 (0) | 2020.08.04 |
[python 파이썬] 백준 9095번 : 1, 2, 3 더하기 (0) | 2020.08.03 |