백준 c++/(1-1)백준 c++ 알고리즘 기초

백준 17299 오등큰수 c++

현구구 2022. 2. 20. 20:37

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

int A_count[1000001] = { 0, };//지역으로 큰 크기의 배열을 선언하면 런타임에러 발생,
//전역에서 배열 0으로 초기화
int main()
{
	int n;
	cin >> n;
	vector<int> A(n); //vector<int> A; 로 선언하면 오류 발생
	vector<int> NGF(n); 
	stack<int> s;
	for (int i = 0; i < n; i++) //A입력
	{
		cin >> A[i];
	}
	for (int i = 0; i < n; i++) //A[1] == 3, A[2] == 2, A[3] == 1, A[4] == 1
	{
		A_count[A[i]]++;
	}
	for (int i = 0; i < n; i++)
	{
		while (!s.empty() && A_count[A[s.top()]] < A_count[A[i]]) //stack 이 비어있지 않고
 //다음 수의 개수가 이전 수의 개수보다 많으면
		{
			NGF[s.top()] = A[i];// NGF에 대입
			s.pop();
		}
		s.push(i);
	}
	while (!s.empty())
	{
		NGF[s.top()] = -1; //NGF 비어있는곳은 -1 대입
		s.pop();
	}
	for (int i = 0; i < n; i++)
	{
		cout << NGF[i] << ' ';
	}
	cout << '\n';
}

 

'백준 c++ > (1-1)백준 c++ 알고리즘 기초' 카테고리의 다른 글

백준 1406 c++ 에디터  (0) 2022.07.04
백준 c++ 1874 스택 수열  (0) 2022.07.04
백준 9012 c++ 괄호  (0) 2022.07.04
백준 9093 c++ 단어 뒤집기  (0) 2022.07.04
백준 10828 c++ 스택  (0) 2022.07.04