[백준/C++] 2493번 탑
2021. 3. 20. 22:55ㆍ알고리즘/구현
728x90
반응형
문제: www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
문제풀이
스택을 사용하여 i번째 탑의 높이보다 크고 다른 탑에 의해 가려지지 않은 탑들만 스택에 남겨야한다. (i번째 탑에 서서 왼쪽의 탑들을 보았을 때 보이는 탑들)
코드
#include <iostream>
#include <stack>
using namespace std;
int main(){
ios::sync_with_stdio(false); cin.tie(nullptr);
int N;
cin>>N;
pair<int, int> tower[N];
for(int i=0; i<N; i++){
int height;
cin>>height;
tower[i] = {i+1, height};
}
stack<pair<int,int>> s;
for(int i=0; i<N; i++){
while(!s.empty() && s.top().second < tower[i].second){
s.pop();
}
if(s.empty()){
cout<<0<<" ";
}
else{
cout<<s.top().first<<" ";
}
s.push(tower[i]);
}
return 0;
}
결과
728x90
반응형
'알고리즘 > 구현' 카테고리의 다른 글
[백준/C++] 18258번 큐 2 (0) | 2021.03.21 |
---|---|
[백준/C++] 1021번 회전하는 큐 (0) | 2021.03.21 |
[백준/C++] 5397번 키로거 (0) | 2021.03.19 |
[백준/C++] 1927번 최소 힙 (0) | 2021.03.11 |
[백준/C++] 18870번 좌표 압축 (0) | 2021.02.26 |