[Stack] Monotonic Stack (단조 스택 )

iMUngHee·2021년 12월 20일
0

자료구조

목록 보기
1/1
post-thumbnail
post-custom-banner

[2021.12.20] 글 작성


💡 이론

  1. 목적

    기본적인 스택 기능을 가지며 모든 원소들이 오름차순(혹은 내림차순)을 유지하도록 한다.

  2. 과정

Ex) 2, 7, 6, 3, 5, 9을 Monotonic Stack에 넣을 때 (오름차순)
[2] -> [2, 7] -> [2, 6] (pop 7)  -> [2, 3] (pop 6) -> [2, 3, 5] -> [2, 3, 5, 9]
  1. 코드

#include <iostream>
#include <stack>

using namespace std;

stack<int> mono_stack;

int arr[6] = { 2, 7, 6, 3, 5, 9 };

int main() {
    for(int i = 0; i < 6; i++) {
        while(!mono_stack.empty() && mono_stack.top() > arr[i]){
          mono_stack.pop();
        }
        mono_stack.push(arr[i]);
    }
    while(!mono_stack.empty()){
      cout << mono_stack.top() << ' ';
      mono_stack.pop();
    }
    cout << '\n';
    return 0;
}
  1. 결과

    Result




Ref.
Special Data Structure: Monotonic Stack
monotone stack
Algorithms for Interview 2: Monotonic Stack

profile
그래봤자 개발, 그래도 개발.
post-custom-banner

0개의 댓글