단조 스택: 다음으로 큰 원소
한 번 순회해 구간 질의에 답합니다
단조 스택: 다음으로 큰 원소은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
다음으로 큰 값 문제
각 숫자에 대해 오른쪽에서 처음 만나는 더 큰 값을 찾으려고 합니다. 완전 탐색은 O(n 제곱)이지만 단조 스택을 사용하면 한 번의 순회로 해결할 수 있습니다.
단조의 의미
단조 스택은 값을 정렬된 순서로 유지합니다. 여기서는 내림차순으로 유지하므로 그 순서가 깨지는 순간 정답을 찾았다는 것을 알 수 있습니다.
값이 아닌 인덱스 저장하기
그대로의 숫자 대신 인덱스를 넣습니다. 그러면 더 큰 원소가 나타났을 때 어느 위치에 정답을 기록해야 하는지 정확히 알 수 있습니다.
stack = []
ans = [-1] * len(nums)왼쪽에서 오른쪽으로 순회하기
배열을 한 번 순회합니다. 각 인덱스에서 이미 해결된 항목을 꺼내거나, 나중을 위해 현재 인덱스를 넣습니다.
for i in range(len(nums)):더 작은 항목 꺼내기
현재 값이 맨 위 인덱스의 값보다 큰 동안에는 해당 맨 위 항목이 마침내 다음으로 큰 원소를 찾은 것입니다.
while stack and nums[i] > nums[stack[-1]]:정답 기록하기
맨 위 인덱스를 꺼내고 그 정답을 현재 값으로 설정합니다. 각 인덱스는 정확히 한 번만 해결되므로 전체 작업량이 선형으로 유지됩니다.
j = stack.pop()
ans[j] = nums[i]넣고 계속하기
더 작은 모든 항목을 처리한 뒤 현재 인덱스를 넣어 나중에 자신보다 큰 원소가 나타날 때까지 기다리게 합니다.
stack.append(i)남은 항목에는 정답이 없습니다
마지막까지 스택에 남은 인덱스는 더 큰 값을 만나지 못한 것입니다. 이들의 기본값인 -1을 유지하며, 더 큰 값이 없다는 뜻입니다.
O(n)인 이유
각 인덱스는 한 번 넣고 한 번 꺼냅니다. 내부 while 반복문이 있더라도 전체 순회에서 총 작업량은 선형으로 유지됩니다.
다음으로 작은 값으로 바꾸기
대신 다음으로 작은 원소가 필요하신가요? 비교를 크다에서 작다로 뒤집어 스택을 오름차순으로 유지하면 됩니다.
while stack and nums[i] < nums[stack[-1]]:요령이 아닌 패턴
구간 질의, 주가, 히스토그램 넓이 문제에서 모두 이 아이디어를 재사용할 수 있습니다. 단조 스택은 기억해 둘 가치가 있는 대회의 핵심 패턴입니다.
확인 문제
단조 스택으로 다음으로 큰 원소를 구하고 있습니다. 전체 시간이 선형인 이유는 무엇일까요?
복습: 한 번의 순회로 여러 정답 찾기
인덱스로 이루어진 내림차순 단조 스택을 사용해 O(n)에 다음으로 큰 원소를 찾았습니다. 이 패턴은 다양한 구간 문제를 해결하는 데 도움이 됩니다. 🚀
자주 묻는 질문
“단조 스택: 다음으로 큰 원소” 강의는 무료인가요?
네 — “단조 스택: 다음으로 큰 원소” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“단조 스택: 다음으로 큰 원소”에서 뭘 배우나요?
한 번 순회해 구간 질의에 답합니다 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“단조 스택: 다음으로 큰 원소” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 괄호 짝 맞추기를 위한 스택
- 단조 스택: 다음으로 큰 원소
- 큐와 collections.deque
- 덱으로 슬라이딩 윈도 최댓값 구하기