최장증가부분수열(LIS) - 파이썬 (DP,이분탐색)
·
알고리즘/자료구조 개념 정리
이분 탐색 문제를 풀어보다가 최장증가수열 알고리즘으로 풀수있는 알고리즘이 있어 이론을 정리를 하려고 합니다. 최장증가부분수열(LIS,Longest increasing subsequence) 이란 주어진 원소 n개인 배열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 알고리즘입니다. 즉 각 원소가 이전 원소보다 크다는 조건을 만족하고 그 길이가 최대안 부분수열을 최장 증가부분수열입니다. 예를 들어 아래와 같은 수열이 있다고 가정을 해봅시다 [3, 5, 7, 9, 2, 1, 4, 8] 여기서 증가하는 부분수열을 만든다면 했을때 졍렬이 아닌 요소를 제외하는 방법으로 한다면 아래와 같이 여러가지가 나올수 있습니다. [3,5,6,7] [1,4,8] [2,4,8] ... 등이 있지만 제일 긴 수열은 3,5,6,8..