๋ฐ์ํ
https://www.acmicpc.net/problem/17299
ํ์ด
๊ฐ ์ซ์๋ค์ ๊ฐฏ์๋ ์ ๋ ฅ์ ๋ฐ๋ ์ค์ cnt ๋ฒกํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉฐ ๊ตฌํ๋ค
์ ๋ ฅ์ ๋ค ๋ฐ์ ํ์๋ ์ ๋ ฅ์ ํด๋นํ๋ ๊ฐ ์ซ์์ ํด๋น ์ซ์์ ๊ฐ์๋ฅผ pair๋ก ๋ง๋ค์ด์ f ๋ฒกํฐ์ ์ ์ฅํด์ค๋ค
์ด์ f๋ฒกํฐ๋ฅผ ๊ฑฐ๊พธ๋ก ๋๋ฉด์ ์คํ์ ์ด์ฉํด ์ค๋ฑํฐ์๋ฅผ ๊ตฌํด์ค๋ค
์คํ์์ ์๋ ์ซ์๋ค์ ๋ณธ์ธ๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์๋ ์ซ์์ด๋ฏ๋ก ํด๋น ์คํ ๋ด์์
๋ณธ์ธ์ ๋น๋๋ณด๋ค ๋ ํฐ ๋น๋๋ฅผ ๊ฐ์ง ์๊ฐ ๋์ฌ ๋๊น์ง popํ๋ค.
๊ทธ๋ ๊ฒ ๊ตฌํ ์ค๋ฑํฐ์๋ ngf ๋ต๋ฒกํฐ์ ๋ฃ์ด์ค๋ค.
๋์ ๊ฒฝ์ฐ ๋ต๋ฒกํฐ๋ฅผ ์ด์ฐจํผ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ์คํ์ ์ฌ์ฉํด์ฃผ์๋ค.
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
typedef pair<int,int> ci;
int main() {
vector<ci> f;
vector<int> cnt(1000001, 0);
stack<ci> s;
stack<int> ngf;
// ์
๋ ฅ
int n, input;
cin >> n;
for(int i=0; i<n; i++) {
cin >> input;
cnt[input]++;
f.push_back({input, 0});
}
// ์
๋ ฅ์ ํด๋นํ๋ ์๋ค์ ๊ฐฏ์๋ ๊ฐ์ด ๋ฃ์ด์ฃผ๊ธฐ
for(int i=0; i<n; i++) {
input = f[i].first;
f[i] = {input, cnt[input]};
}
// ์คํ์ ์ด์ฉํ์ฌ ์ค๋ฑํฐ์ ๊ตฌํ๊ธฐ
s.push({-1, 1000001});
for(int i=f.size()-1; i>=0; i--) {
while(f[i].second >= s.top().second) {
s.pop();
}
ngf.push(s.top().first);
s.push(f[i]);
}
// ์ถ๋ ฅ
while(!ngf.empty()) {
cout << ngf.top() << " ";
ngf.pop();
}
return 0;
}
๋ฐ์ํ
'๐๏ธ ICPC Sinchon > Linear Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1966๋ฒ: ํ๋ฆฐํฐ ํ (0) | 2023.11.07 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1918๋ฒ: ํ์ ํ๊ธฐ์ (0) | 2023.05.24 |
[BOJ][C++] ๋ฐฑ์ค 20301๋ฒ: ๋ฐ์ ์์ธํธ์ค (0) | 2023.04.08 |
[BOJ S1][C++] ๋ฐฑ์ค 4889๋ฒ : ์์ ์ ์ธ ๋ฌธ์์ด (0) | 2022.09.14 |
[BOJ S3][C++] ๋ฐฑ์ค 18115๋ฒ : ์นด๋ ๋๊ธฐ (0) | 2022.09.12 |