
최장 증가 부분 수열(LIS) 알고리즘 - JAVA
·
알고리즘/개념
최장 증가 부분 수열(LIS, Longest Increasing Subsequence)최장 증가 부분 수열은 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 알고리즘이다.예를 들어 주어진 수열이 위와 같을 때 만들어 질 수 있는 증가하는 부분 수열은 위와 같이 같은 색으로 묶인 {2, 4}, {1, 2, 3}, {1, 5, 6} 등 여러가지가 있을 수 있지만위 그림과 같이 원소 5개로 이루어진 {1, 2, 3, 5, 6}이 수열 A에서 가장 긴 증가하는 부분 수열이다. 이렇게 최장 증가 부분수열을 구하는 알고리즘에 대해 알아보자.풀이방법LIS 길이 구하기 - DP: O(n^2)LIS 길이 구하기 - 이분탐색: O(n log n)DP를 이용하여 구할 경우 구현이 간단하지만 시간복잡도가 O(n^..