Mini
백준 2493 cpp // 스택 idea 발상, 초기예외 처리하는법 : 범위밖의 객체를 push하라 본문
https://www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
*의사코드 및 전체코드
#include <bits/stdc++.h>
using namespace std;
int n;
stack<pair<int, int>> s; //높이,인덱스
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
/**
* 1. 맨왼쪽에 {100,000,001 / idx 0} 의 탑이있다고 가정 => 0을 리턴하도록
* 2. 나보다 작은 타워는 쓸모없음 -> 모두 pop
* 3. 내 좌측에는 나보다 큰 타워만남음 -> 그게 정답
* 4. push
*/
cin >> n;
s.push({ 100000001,0 });
for (int i = 1; i <= n; ++i) {
int height;
cin >> height;
while (height > s.top().first) {
s.pop();
}
cout << s.top().second<<" ";
s.push({ height,i });
}
}
'Algorithm > 스택' 카테고리의 다른 글
백준 2504 c++ // 스택응용 (0) | 2023.09.01 |
---|---|
백준 10799 c++ // 스택응용 idea, 남은'('의 갯수를 활용하라 (0) | 2023.08.23 |
백준 4949 cpp // 괄호검사 알고리즘 (0) | 2023.08.22 |
백준 1874 cpp // 유효스택검사 알고리즘 (0) | 2023.08.17 |
백준 10773 cpp // 스택사용법 (0) | 2023.08.17 |