12015번: 가장 긴 증가하는 부분 수열 2 www.acmicpc.net 이 문제는 dynamic programming을 사용해 풀 수 있는 대표적인 유형의 문제 중 하나다. 하지만 dynamic programming을 사용하면 O(N^2)의 시간 복잡도를 가지는데, N이 작으면 괜찮으나 위 문제의 경우 N이 10^6까지 커질 수 있기 때문에 이러한 알고리즘을 사용할 경우 시간이 매우 오래 걸린다는 단점이 있다. 그런데 가장 긴 부분 수열의 '길이'만을 구한다는 조건에 한하면 특별히 다른 알고리즘으로 문제를 풀 수 있다. 이 문제에서는 '가짜' 부분수열을 담는 배열을 이용한다. 먼저 이 배열은 비어있으면 안 되기 때문에 A의 첫 번째 원소를 넣는다. 그리고 A의 각 원소에 대해 배열의 마지막 원소보다 ..