728x90
https://www.acmicpc.net/problem/17298
최초풀이
하나하나 모든 값을 비교하면서 하면 런타임 오류가 발생합니다.
따라서 스택에 입력값을 입력하면서 들어오는 값과 아직 처리되지 않은 값을 비교하면서 조건을 처리해줍니다.
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main(){
int N, k;
vector<int>A(1000000,-1);// 벡터 사이즈 1000000으로 -1값 초기화
stack<pair<int,int>>s;// <입력될 수, 인덱스 번호>
cin >> N;
for (int i = 0; i < N; i++) {
cin >> k;
while (!s.empty()) {
if (s.top().first < k) {
A[s.top().second] = k;
s.pop();
}
else {
s.push({ k,i });
break;
}
}
if (s.empty()) {
s.push({ k,i });
}
}
for (int i = 0; i < N; i++)
cout << A[i] << " ";
return 0;
}
728x90
'🥇Baekjoon Solutions > 자료구조' 카테고리의 다른 글
[C++] 백준 1991번: 트리 순회 (0) | 2021.07.23 |
---|
댓글