퀴즈 / 알고리즘 / 문제

최장 증가 부분 수열(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)에 최적화할 수 있습니다. 보조 배열의 각 위치에 해당 길이의 증가 수열에서 가능한 가장 작은 마지막 값을 유지하여 효율적으로 탐색합니다.

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

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

정규반 살펴보기
START THE LOOP · CHOOSE

시장과 사람의 답을 봤다면,
다음 결과물의 구조를 고릅니다.

한 번의 결과에 기대지 않고 다시 만들 수 있도록, 문제 발견부터 제작·배포·수익화까지 이어지는 전체 흐름을 익혀보세요.

TTJ CLASS에서 다음 구조 고르기
처리 중...