ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION126 / 1500
알고리즘난이도 중하5분 답변 목표 · 보강본

각 원소보다 오른쪽에 있는 첫 큰 값을 찾으려 합니다. 단조 스택은 어떻게 중복 탐색을 줄이나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

아직 답을 못 찾은 원소의 인덱스를 단조 순서로 스택에 유지하고 새 값이 그 조건을 만족하면 여러 원소의 답을 한 번에 확정합니다. 모든 오른쪽 구간을 다시 훑는 대신 각 원소가 제한된 횟수로 들어가고 나옵니다.

동작 원리와 전제

다음 큰 값을 찾는다면 새 값이 스택 위 값보다 클 때 pop한 원소의 답이 됩니다. 같은 값을 큰 것으로 볼지 크거나 같은 것으로 볼지 비교 조건을 고정합니다. 값만 저장하면 위치·거리 계산을 잃을 수 있어 인덱스를 저장합니다.

선택과 실패 처리

각 원소는 한 번 push·한 번 pop되므로 내부 while이 있어도 전체는 선형일 수 있습니다. 이것은 개별 반복이 항상 상수 시간이라는 뜻이 아니라 연산열 전체의 상환 분석입니다. 원형 배열이나 왼쪽 질의는 순회·종료 규칙이 달라집니다.

구체적인 사례와 검증

입력 [2,1,3]에서 3을 만나면 스택의 1과 2를 꺼내 두 원소의 다음 큰 값이 3임을 확정할 수 있습니다. 그 사이 더 이른 큰 값이 있었다면 이미 pop됐어야 하므로 현재 값이 첫 적합 값이라는 불변식입니다. 동일값을 허용하는 조건은 >와 >=에서 달라져 중복 데이터 테스트가 중요합니다. pop한 인덱스는 다시 스택에 넣지 않으므로 중첩 while의 전체 횟수가 선형으로 제한됩니다. 개별 새 값 하나가 많은 원소를 pop할 수 있어 한 반복의 최대 비용과 전체 상환 비용은 구분해야 합니다. 입력을 스트림으로 받을 때 결과를 언제 확정할 수 있는지도 명시합니다.

증가·감소·동일값·빈 배열·한 원소를 단순 이중 루프와 비교합니다. 스택에 남은 원소의 부재 결과를 명시합니다. 단조성 불변식과 pop 시점이 왜 첫 적합 원소인지 설명할 수 있어야 합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 아직 답을 못 찾은 원소의 인덱스를 단조 순서로 스택에 유지하고 새 값이 그 조건을 만족하면 여러 원소의 답을 한 번에 확정합니다.
  • 선택 조건: 각 원소는 한 번 push·한 번 pop되므로 내부 while이 있어도 전체는 선형일 수 있습니다.
  • 검증 기준: 증가·감소·동일값·빈 배열·한 원소를 단순 이중 루프와 비교합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 내부 while이 있으므로 단조 스택은 항상 O(n²)이라고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 인출 순서와 실제 완료·반영 순서를 어떤 실행 구조로 연결하나요?
  • 확장 한 번의 O(n) 지연과 전체 append의 상환 비용은 어떻게 다르게 측정하나요?
  • 단조 누적 조건에서 첫 적합 위치를 찾을 때 구간과 반환 경계를 어떻게 정의하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기