์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์ค๋ธ์
- ๊ทธ๋ํํ์
- ๊ทธ๋ฆฌ๋
- skala
- DP
- ๋๋น์ฐ์ ํ์
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์ฐ์ ์์ํ
- ๋์ ํฉ
- ํ์ด์ฌ
- ์์ํ์
- ์ ๋ ฌ
- ๋ฐฑ์ค
- ๊ทธ๋ํ
- ๋์ ๊ณํ๋ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- skala1๊ธฐ
- ๋จธ์ง์ํธ
- db
- ๊ตฌํ
- ๊น์ด์ฐ์ ํ์
- ์ํ
- BFS
- LIS
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ณํฉ์ ๋ ฌ
- SQL
- DFS
- Today
- Total
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 1966๋ฒ: ํ๋ฆฐํฐ ํ - C++ ๋ณธ๋ฌธ
๋ฌธ์
์ฌ๋ฌ๋ถ๋ ์๋ค์ํผ ์ฌ๋ฌ๋ถ์ ํ๋ฆฐํฐ ๊ธฐ๊ธฐ๋ ์ฌ๋ฌ๋ถ์ด ์ธ์ํ๊ณ ์ ํ๋ ๋ฌธ์๋ฅผ ์ธ์ ๋ช ๋ น์ ๋ฐ์ ‘์์๋๋ก’, ์ฆ ๋จผ์ ์์ฒญ๋ ๊ฒ์ ๋จผ์ ์ธ์ํ๋ค. ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ์์ธ๋ค๋ฉด Queue ์๋ฃ๊ตฌ์กฐ์ ์์ฌ์ FIFO - First In First Out - ์ ๋ฐ๋ผ ์ธ์๊ฐ ๋๊ฒ ๋๋ค. ํ์ง๋ง ์๊ทผ์ด๋ ์๋ก์ด ํ๋ฆฐํฐ๊ธฐ ๋ด๋ถ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ์๋๋ฐ, ์ด ํ๋ฆฐํฐ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ธ์๋ฅผ ํ๊ฒ ๋๋ค.
- ํ์ฌ Queue์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์์ ‘์ค์๋’๋ฅผ ํ์ธํ๋ค.
- ๋๋จธ์ง ๋ฌธ์๋ค ์ค ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ๋๋ผ๋ ์๋ค๋ฉด, ์ด ๋ฌธ์๋ฅผ ์ธ์ํ์ง ์๊ณ Queue์ ๊ฐ์ฅ ๋ค์ ์ฌ๋ฐฐ์น ํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฐ๋ก ์ธ์๋ฅผ ํ๋ค.
์๋ฅผ ๋ค์ด Queue์ 4๊ฐ์ ๋ฌธ์(A B C D)๊ฐ ์๊ณ , ์ค์๋๊ฐ 2 1 4 3 ๋ผ๋ฉด C๋ฅผ ์ธ์ํ๊ณ , ๋ค์์ผ๋ก D๋ฅผ ์ธ์ํ๊ณ A, B๋ฅผ ์ธ์ํ๊ฒ ๋๋ค.
์ฌ๋ฌ๋ถ์ด ํ ์ผ์, ํ์ฌ Queue์ ์๋ ๋ฌธ์์ ์์ ์ค์๋๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ค ํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์์๋ด๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ์์ ์์์ C๋ฌธ์๋ 1๋ฒ์งธ๋ก, A๋ฌธ์๋ 3๋ฒ์งธ๋ก ์ธ์๋๊ฒ ๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ํ ์คํธ์ผ์ด์ค์ ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ์ผ์ด์ค๋ ๋ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ ์คํธ์ผ์ด์ค์ ์ฒซ ๋ฒ์งธ ์ค์๋ ๋ฌธ์์ ๊ฐ์ N(1 ≤ N ≤ 100)๊ณผ, ๋ช ๋ฒ์งธ๋ก ์ธ์๋์๋์ง ๊ถ๊ธํ ๋ฌธ์๊ฐ ํ์ฌ Queue์์ ๋ช ๋ฒ์งธ์ ๋์ฌ ์๋์ง๋ฅผ ๋ํ๋ด๋ ์ ์ M(0 ≤ M < N)์ด ์ฃผ์ด์ง๋ค. ์ด๋ ๋งจ ์ผ์ชฝ์ 0๋ฒ์งธ๋ผ๊ณ ํ์. ๋ ๋ฒ์งธ ์ค์๋ N๊ฐ ๋ฌธ์์ ์ค์๋๊ฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ์ค์๋๋ 1 ์ด์ 9 ์ดํ์ ์ ์์ด๊ณ , ์ค์๋๊ฐ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์๋ ์๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์ถ๋ ฅํ๋ค.
STL์ ์ฐ์ ์์ ํ์ธ priority_queue๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋ณด์๋ค. priority_queue์์๋ enqueue๋๋ ๊ฐ๋ค์ ์ ๋ ฌํ์ฌ ์์๋๋ก ๋ฐฐ์นํ๋ค๊ณ ํ๋ค.
์ธ๋ฑ์ค์ ์ค์๋๋ฅผ ํ๋ฒ์ ๋ด์ pair<int, int> ์๋ฃํ์ queue ํ๋์, ์ค์๋๋ฅผ ๋ด์ ์ฐ์ ์์ ํ ํ๋๋ฅผ ์ ์ธํ ๋ค ์ ๋ ฅํด์ค ๋๋ก ๊ฐ์ ๋ฃ์ด์ค๋ค.
๊ทธ ๋ค์ queue๊ฐ ๋ชจ๋ ๋น๊ธฐ ์ ๊น์ง ํ๋์ฉ ์ถ๋ ฅํ๋๋ฐ, ์ด ๋ ํ์ฌ ๊ฐ์ฅ ๋์ ์ค์๋๋ณด๋ค ์ง๊ธ ๋ฝ์ ๋ฌธ์์ ์ค์๋๊ฐ ๋ ๋ฎ์ ๊ฒฝ์ฐ ํ์ฌ ๋ฌธ์ ์ ๋ณด ๊ทธ๋๋ก ๋ค์ queue ์ ์ผ ๋ค์ pushํด์ค ๋ค ์์์๋ popํด์ฃผ๊ณ , ๋ฐ๋์ ๊ฒฝ์ฐ ์ถ๋ ฅํด์ค๋ค. ์ง๊ธ ์ถ๋ ฅํ ๋ฌธ์์ ์์๊ฐ ๋ด๊ฐ ๋ช๋ฒ์งธ๋ก ์ธ์๋๋์ง ์์์ผ ํ๋ ๋ฌธ์์ธ ๊ฒฝ์ฐ ํ์ฌ ์นด์ดํธ๋ฅผ ์ถ๋ ฅํด์ค ๋ค ์ข ๋ฃํ๋ค.
priority_queue๋ฅผ ํ๋ฒ๋ ์์จ๋ดค๋์ง๋ผ STL์ ์จ๋ณด๊ณ ์ถ์ด์ ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค..!
์ฝ๋
#include <cstdio>
#include <queue>
using namespace std;
int main(void) {
int test;
scanf("%d", &test);
for(int i = 0; i < test; i++) {
int N, M;
scanf("%d %d", &N, &M);
queue<pair<int, int> > print;
priority_queue<int> check;
int priority;
for(int j = 0; j < N; j++) {
scanf("%d", &priority);
print.push(make_pair(j, priority));
check.push(priority);
}
int count = 0;
while(!print.empty()) {
int index = print.front().first;
int now_priority = print.front().second;
if(check.top() > now_priority) {
print.push(print.front());
print.pop();
}
else {
count++;
print.pop();
check.pop();
if(index == M) {
printf("%d\n", count);
break;
}
}
}
}
return 0;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1788๋ฒ: ํผ๋ณด๋์น ์์ ํ์ฅ - C++ (0) | 2022.02.21 |
---|---|
[๋ฐฑ์ค] 3085๋ฒ: ์ฌํ ๊ฒ์ - C++ (0) | 2022.02.18 |
[๋ฐฑ์ค] 14501๋ฒ: ํด์ฌ - C++ (0) | 2022.02.15 |
[๋ฐฑ์ค] 1932๋ฒ: ์ ์ ์ผ๊ฐํ - C++ (0) | 2022.02.10 |
[๋ฐฑ์ค] 3020๋ฒ: ๊ฐ๋ฅ๋ฒ๋ - C++ (0) | 2022.02.09 |