17298 - 오큰수

재찬·2023년 1월 30일
0

Algorithm

목록 보기
36/64

문제

코드

#include <bits/stdc++.h>
using namespace std;

int n;
int a[1000004];
int ret[1000004];
stack<int> s;

int main(){
	cin >> n;
	memset(ret, -1, sizeof(ret));
	 for(int i = 0; i < n; i++){
	 	cin >> a[i];
	 	
	 	while(s.size() && a[s.top()] < a[i]){
	 		ret[s.top()] = a[i];
	 		s.pop();
		 }
		 s.push(i); 
	 }
	 for(int i = 0; i < n; i++)cout << ret[i] << " ";
}

풀이

결과

후기

stack이라는게 믿기지가 않았다.
힌트를 좀 보고 나서야 스택이 이렇게도 쓰일 수 있겠구나 생각했다.
쉬운데 어렵고 난이도도 이렇게까지 높지 않아도 될듯 하면서 그렇기도 한거 같은 문제였다.

0개의 댓글