๋ฐฑ์ค 11279: ์ต๋ ํ
https://www.acmicpc.net/problem/11279
-> N์ ์ ๋ ฅ๋ฐ๋๋ค.
-> N๊ฐ๋งํผ ์ ๋ ฅ๋ฐ๋๋ค.
-> 0์ด ์๋ ์์ฐ์๋ฅผ ์ ๋ ฅํ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก ์ถ๋ ฅ์์ด ๊ทธ๋ฅ ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ์ด์ค๋ค.
-> 0์ ์ ๋ ฅํ๋ค๋ฉด ๋ฐฐ์ด์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅํด์ฃผ๊ณ ,๊ทธ ๊ฐ์ ์ ๊ฑฐํด์ค๋ค.
// ๋จ, ๋ฐฐ์ด์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ๋ 0์ ์ถ๋ ฅํด์ค๋ค
Priority_queue
-> ํ์ ์๋ ๋ชจ๋ ์์ ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ด Top์ ์ ์งํ๋๋ก, ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ํฌ๋๋ก ์ค๊ณ๋์ด ์๋ค.
// ์ฐ์ ์์ ํ๋ ๋ด๋ถ์ ์ผ๋ก Heap์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์
- ์ ์ธ๋ฐฉ๋ฒ
#include<queue>
priority_queue<์๋ฃํ, ๊ตฌํ์ฒด, ๋น๊ต์ฐ์ฐ์> pq;
- ๊ธฐ๋ณธ์ ์ธ ๋ฉ์๋
push(): ์ฐ์ ์์ ํ์ ์์๋ฅผ ์ถ๊ฐํ๋ค
pop(): ์ฐ์ ์์ ํ์์ top์ ์์๋ฅผ ์ ๊ฑฐํ๋ค
top(): ์ฐ์ ์์ ํ์์ top์ ์๋ ์์ ์ฆ ์ฐ์ ์์๊ฐ ๋์ ์์๋ฅผ ๋ฐํํ๋ค.
empty(): ์ฐ์ ์์ ํ๊ฐ ๋น์ด์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค
size(): ์ฐ์ ์์ ํ์ ํฌํจ๋์ด ์๋ ์์์ ์๋ฅผ ๋ฐํํ๋ค
[์ฐธ๊ณ ] https://kbj96.tistory.com/15
https://jungeu1509.github.io/algorithm/use-priorityqueue/โ
#include <iostream>
#include <queue>
using namespace std;
int main() {
int N;
priority_queue<int> pq;
cin >> N;
for (int i = 0; i < N; i++) {
int x;
cin >> x;
if (x == 0) {
if (pq.empty()) {
cout << 0 << "\n";
}
else {
cout << pq.top() << "\n";
pq.pop();
}
}
else {
pq.push(x);
}
}
return 0;
}
-> for๋ฌธ์ ํตํด์ N๋ฒ ๋ฐ๋ณตํ ์ ์๊ฒ ํด์ฃผ์๊ณ if๋ฌธ์ ํตํด 0๊ณผ ๊ด๋ จ๋ ์กฐ๊ฑด๋ค์ ๋ง์กฑ์์ผ์ฃผ์๋ค.
-> ํจ์๋ค์ queue๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฅ ํจ์ ์ด์ฉ(top(),pop() ๋ฑ..)
??????????????
์ฝ๋๊ฐ ์ด๋ ๊ฒ ๊ฐ๋จํ๋ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋์ค๋ค๋..
์ด๋ป๊ฒ ์์ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ for๋ฌธ์ while๋ฌธ์ผ๋ก๋ ๋ฐ๊ฟ๋ณด๊ณ ์ด๊ฒ์ ๊ฒ ํด๋ณด๋ค๊ฐ ๊ตฌ๊ธ๋งํ๋ค.
C++์ ์ฌ์ฉํ๊ณ ์๊ณ cin/cout์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด, cin.tie(NULL)๊ณผ sync_with_stdio(false)๋ฅผ ๋ ๋ค ์ ์ฉํด ์ฃผ๊ณ , endl ๋์ ๊ฐํ๋ฌธ์(\n)๋ฅผ ์ฐ์. ๋จ, ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ด์ scanf/printf/puts/getchar/putchar ๋ฑ C์ ์ ์ถ๋ ฅ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
[์๊ฐ์ด๊ณผ๊ฐ ๋์ฌ ๊ฒฝ์ฐ ๋์ฒ๋ฒ] https://www.acmicpc.net/problem/15552
๋ญ ์ ์ฉํ๋ผ๋๋ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ๋ ๊ตฌ๊ธ๋งํด๋ณด์๋ค.
ios_base::sync_with_stdio ๊ตฌ๋ฌธ์ c์ stdio์ cpp์ iostream์ ๋๊ธฐํ์์ผ์ฃผ๋ ์ญํ ์ ํ๋๋ฐ, ์ด ๋ iostream๊ณผ stdio์ ๋ฒํผ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ ์ด๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์,ios_base::sync_with_stdio(false); ์ฝ๋๋ฅผ ์์ฑํด์ค์ผ๋ก์จ ๋๊ธฐํ๋ฅผ ๋นํ์ฑํ์์ผ์ค๋๋ค.
cin.tie(null); ์ฝ๋๋ cin๊ณผ cout์ ๋ฌถ์์ ํ์ด์ค๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก cin๊ณผ cout์ ๋ฌถ์ฌ์๊ณ ๋ฌถ์ฌ์๋ ์คํธ๋ฆผ๋ค์ ํ ์คํธ๋ฆผ์ด ๋ค๋ฅธ ์คํธ๋ฆผ์์ ๊ฐ IO ์์ ์ ์งํํ๊ธฐ ์ ์ ์๋์ผ๋ก ๋ฒํผ๋ฅผ ๋น์์ค์ ๋ณด์ฅํฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํ ๋๋ ๋ณดํต ์ฑ๊ธ ์ฐ๋ ๋ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ios_base::sync_with_stdio(false); ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค๋ ๊ฒฐ๊ณผ์ ์ํฅ์ด ์๊ณ C์ C++์ ๋ฒํผ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค. (์ด๋, c ์คํ์ผ์ ์ ์ถ๋ ฅ๋ฌธ์ ํผ์ฉํ์ง ์๋๋ก ์ฃผ์ํด์ค์ผ ํฉ๋๋ค.)
๊ธฐ๋ณธ์ ์ผ๋ก cin์ผ๋ก ์ฝ์ ๋ ๋จผ์ ์ถ๋ ฅ ๋ฒํผ๋ฅผ ๋น์ฐ๋๋ฐ, ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ ๋๋ ํ๋ฉด์ ๋ฐ๋ก ๋ณด์ด๋ ๊ฒ์ด ์ค์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์, ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฌ๋ฌ ๋ฒ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ฐ๋ณตํด์ผ ํ๋ ๊ฒฝ์ฐ ํ์์ ์ผ๋ก cin.tie(null); ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ cout๊ณผ cin์ ๋ฌถ์์ ํ์ด์ค์ผ ํฉ๋๋ค.
[์ถ์ฒ] https://jaimemin.tistory.com/1521 [๊พธ์คํจ]
#include <iostream>
#include <queue>
using namespace std;
int main() {
int N;
priority_queue<int> pq;
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> N;
for (int i = 0; i < N; i++) {
int x;
cin >> x;
if (x == 0) {
if (pq.empty()) {
cout << 0 << "\n";
}
else {
cout << pq.top() << "\n";
pq.pop();
}
}
else {
pq.push(x);
}
}
return 0;
}
- ์์ผ๋ก ๋ฌธ์ ํ ๋์๋ c++ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ์๊ฐ ์ด๊ณผ๋ฅผ ๊ฒฝ๊ณํ๊ธฐ ์ํด์๋ cin.tie(NULL)์ ํตํด cout๊ณผ cin์ ๋ฌถ์์ ํ์ด์ฃผ์!
ํ๋ค๋ค............................. ํด
์๊ฐ๋ณด๋ค ๋ฌธ์ ๋ฅผ ํ ๋ ์๊ฐํด์ผํ๋ ์ ์ด ๋ง์ ๊ฒ ๊ฐ๋ค ์ธ์ ๊ฐ๋ ๋ค ์ ์ ์์ผ๋ ค๋