LIS(Longest Increasing Subsequence; 최장 증가 부분 수열)
어떠한 수열에서 오름차순으로 정렬된 가장 긴 부분 수열을 찾는 문제
이때, 부분 수열은 서로 연속할 필요는 없다.
어떠한 수열에서 일부 원소를 선택해 새로 만든 수열은 '부분 수열'이며 그 수열이 오름차순으로 정렬되어 있으면 '증가하는 부분 수열'이다.
ex)
수열 [10, 20, 10, 30, 20, 50]
해당 수열에서 [10, 20, 30, 50], [10, 20, 50], [10, 50],... 등 많은 증가 부분 수열이 있지만
많은 증가 부분 수열 中 가장 길이가 긴 수열은 4개의 원소를 가진 [10, 20, 30, 50]이다. 따라서 [10, 20, 30, 50] 최장 증가 부분 수열이다.
LIS는 DP(Dynamic Programming)문제 유형으로 자주 나온다.
- 시간 복잡도
DP를 이용한 방법 : O(N^2)
이분 탐색을 이용한 방법 : O(NlogN)
- DP(Dynamic Programming)
[Algorithm] Dynamic Programming(동적 계획법, 다이나믹 프로그래밍)
Dynamic Programming(동적 계획법, 다이나믹 프로그래밍) 응용 수학자 리차드 벨만(Richard Bellman)이 1953년에 고안한 알고리즘 큰 문제를 간단한 여러 개의(작은) 문제(Overlapping Subproblem)로 나누어 해결..
young-library.tistory.com
- LIS 문제 예제
[백준(Baekjoon)] 11053 가장 긴 증가하는 부분 수열
문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 2.
young-library.tistory.com
'Study > Algorithm' 카테고리의 다른 글
[Algorithm] Brute Force (브루트 포스) (0) | 2022.03.09 |
---|---|
[Algorithm] Dynamic Programming(동적 계획법, 다이나믹 프로그래밍) (0) | 2021.12.19 |
[Algorithm] 이진 탐색(Binary Search, 이분 탐색, 이진 검색) (0) | 2021.10.11 |
[Algorithm] LCS (최장 공통 부분 수열, 최장 공통 부분 문자열) (0) | 2021.10.03 |
[Algorithm] 점근 표기법, 빅오 표기법(big-O notation) (0) | 2021.08.30 |
댓글