백준 2493 탑 - C++

JangGwon·2022년 12월 2일
0

문제설명


내 풀이

이번 문제는 스택을 사용하여 풀었는데, 먼저 높이를 입력받고 현재 높이가 스택의 top보다 높다면 스택에 push한 다음 스택의 top의 높이가 현재 높이보다 작을 때까지 스택에서 원소를 제가했습니다. 그 다음스택의 top의 인덱스를 출력한 다음 현재 높이와 해당 인덱스를 스택에 추가했는데, 이 과정을 입력 받는 횟수 총 N번 만큼 반복하게하여 풀었습니다.

코드

#include <iostream>
#include <stack>
#include <pair>

using namespace std;


int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
	stack<pair<int,int>> st; 

    st.push(make_pair(1234567890,0));
    cin >> n;
    for(int i=1;i<=n;i++){ 
        int height;
        cin >> height;
        while(st.top().X<height){
            st.pop();
        }
        cout << st.top().Y << ' ';
        st.push(make_pair(height,i));
    }

    return 0;
}

0개의 댓글