#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 |