처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
퀴즈 / 알고리즘 / 문제

최장 증가 부분 수열(LIS, Longest Increasing Subsequence)의 효율적인 풀이 방법은?

보통 freeCodeCamp
보기 및 정답
A 모든 부분 수열을 나열하여 가장 긴 것을 찾는 브루트 포스만 가능하다
B 동적 프로그래밍과 이진 탐색을 결합하여 O(n log n) 시간에 풀 수 있다
C 배열의 원소를 오름차순으로 정렬한 후 처음부터 순서대로 세면 된다
D 해시 테이블을 사용하여 각 원소의 위치를 저장하면 O(1)의 시간 복잡도에 풀 수 있다

해설

LIS 문제는 단순 DP로 O(n²)에 풀 수 있지만, 보조 배열과 이진 탐색(lower_bound)을 활용하면 O(n log n)에 최적화할 수 있습니다. 보조 배열의 각 위치에 해당 길이의 증가 수열에서 가능한 가장 작은 마지막 값을 유지하여 효율적으로 탐색합니다.

코딩, 제대로 배우고 싶다면?

개념 확인은 퀴즈로, 실력은 실전 프로젝트로.
투더제이 코딩클래스에서 시작하세요.

정규반 살펴보기