본문 바로가기
알고리즘

[백준] 17298 오큰수 (C++)

by kigo23 2023. 4. 18.
반응형

오른쪽에 있는 자신보다 큰 수 중에서 가장 왼쪽에 있는 수를 출력해주는 문제이다.

#include <iostream>
#include <stack>

  using namespace std;

int main() {

  int n;
  cin >> n;

  int arr[1000001];
  int answer[1000001];
  stack<int> s;
  
  for(int i=0; i<n; i++){
    cin  >> arr[i];
    answer[i] = -1;
  }

  for(int i=0; i<n; i++){
    
    while(!s.empty() && arr[s.top()] < arr[i]){
      answer[s.top()] = arr[i];
      s.pop();
    }
    s.push(i);
  }
  
  for(int i=0; i<n; i++){
    cout << answer[i] << " ";
  }
  
  return 0;
}