문제 : https://www.acmicpc.net/problem/11053
초기 구상과정
초기 코드
초기 코드를 이번에는 날려버렸다. 이유는 지속적인 시간초과와 오답으로 인해서..(솔직히 화가 나기도 해서..)
구상 단계에서 적었듯이 이게 왜 DP로 해결해야하나?라고 의문점을 갖고 있었고 문제를 풀면서도 DP가 도대체 이해가 되지 않았다. 가장 작은 단위까지 내려가서 해결하며 점점 크기를 키워서 최종 결과를 도출한다고 하는데 이걸 이해하기가 너무 어려웠다. DP를 이해하고 넘어왔다고 생각했는데 그냥 전혀 모르고 있는 것이었다.
최종 코드
import sys
length = int(input())
nums = list(map(int, input().split()))
dp = [1] * length
result = 0
for a in range(length):
for b in range(a):
if nums[a] > nums[b]:
dp[a] = max(dp[a], dp[b] + 1)
print(max(dp))
느낀점
알고리즘에서 이해를 많이 하고 있다고 생각했는데 모르는 것이 너무나도 많고 이해하기 힘들다는 점과 이를 해결하는 방법이 도무지 떠오르지 않는다는 점이다. 많이 풀어보는 것도 장땡이 아니고 그저 풀지 못하는 문제를 계속해서 잡고만 있는 것도 능사는 아니라는 생각이 든다. 조금 스트레스 받는다...