본문 바로가기
🥇Baekjoon Solutions/자료구조

[C++] 백준 17298번: 오큰수

by 코푸는 개발자 2021. 7. 28.
728x90

https://www.acmicpc.net/problem/17298

 

17298번: 오큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

최초풀이

하나하나 모든 값을 비교하면서 하면 런타임 오류가 발생합니다. 

따라서 스택에 입력값을 입력하면서 들어오는 값과 아직 처리되지 않은 값을 비교하면서 조건을 처리해줍니다.

#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

댓글