๐ป
[๋ฐฑ์ค] ์ฐ์ ์์ํ - 1966. ํ๋ฆฐํฐํ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ์ฐ์ ์์ํ - 1966. ํ๋ฆฐํฐํ
๋ํจ๋ 2020. 11. 12. 12:46
๋ฌธ์
์ฌ๋ฌ๋ถ๋ ์๋ค์ํผ ์ฌ๋ฌ๋ถ์ ํ๋ฆฐํฐ ๊ธฐ๊ธฐ๋ ์ฌ๋ฌ๋ถ์ด ์ธ์ํ๊ณ ์ ํ๋ ๋ฌธ์๋ฅผ ์ธ์ ๋ช ๋ น์ ๋ฐ์ ‘์์๋๋ก’, ์ฆ ๋จผ์ ์์ฒญ๋ ๊ฒ์ ๋จผ์ ์ธ์ํ๋ค. ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ์์ธ๋ค๋ฉด 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๋ฒ์งธ๋ก ์ธ์๋๊ฒ ๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ test case์ ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ test case์ ๋ํด์ ๋ฌธ์์ ์ N(100์ดํ)์ ๋ช ๋ฒ์งธ๋ก ์ธ์๋์๋์ง ๊ถ๊ธํ ๋ฌธ์๊ฐ ํ์ฌ Queue์ ์ด๋ค ์์น์ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ M(0์ด์ N๋ฏธ๋ง)์ด ์ฃผ์ด์ง๋ค. ๋ค์์ค์ N๊ฐ ๋ฌธ์์ ์ค์๋๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ค์๋๋ 1 ์ด์ 9 ์ดํ์ด๋ค. ์ค์๋๊ฐ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์๋ ์๋ค. ์์ ์๋ N=4, M=0(A๋ฌธ์๊ฐ ๊ถ๊ธํ๋ค๋ฉด), ์ค์๋๋ 2 1 4 3์ด ๋๋ค.
์ถ๋ ฅ
๊ฐ test case์ ๋ํด ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
1
2
5
ํ์ด
์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ ์๊ฐ์ ๋ชปํ๊ณ ์ฒ์์ map์ ์ด์ฉํด์ ํ๋ ค๊ณ ํ๋ค.
์ฐ์ ์์ํ ๋ฌธ์ ๋ฅผ ์์ฃผ ์ ํ์ง ๋ชปํ๋ค๋ณด๋ ์๊พธ ๊น๋จน๋ ๋ฏ ์ถ๋ค.
์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์๋ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ๋ก ๊ธฐ๋ณธ์ ๋ ฌ๋๋ค.
priority_queue<int, vector<int> > pq; //์๋ฃํ int, ์ปจํ ์ด๋ vector, ๊ธฐ๋ณธ๊ฐ์ ๋ด๋ฆผ์ฐจ์
ํ์ ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ, ์๋ฅผ ๋ค์ด
3 0
1 2 5
๋ผ๊ณ ์ฃผ์ด์ง๋ค๋ฉด
q : 0, 1 / 1, 2 / 2, 5
pq : 5 / 2 / 1
์ด๋ ๊ฒ ์์๊ฐ ๋ค์ด๊ฐ์ง๊ณ while๋ฌธ์ ๋๋ฉด์ q์ ์์๋ฅผ ํ๋์ฉ ๊บผ๋ด์ pq์ top์ด๋ ๋น๊ตํ๊ณ ๊ฐ์ผ๋ฉด pq์์ popํ๋ค. ์ด๋, index์ ๊ฐ์ด M๊ณผ ๊ฐ์ผ๋ฉด ์ฐพ์ผ๋ ค๋ ์์น์ด๋ฏ๋ก ์ถ๋ ฅํด์ฃผ๊ณ break๋ฌธ์ผ๋ก ๋น ์ ธ๋๊ฐ๋ค. ๋ง์ฝ, ๊ฐ์ง ์๋ค๋ฉด ๋ค์ q์ ๋ฃ์ด์ค๋ค.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | //1966. ํ๋ฆฐํฐํ #include <iostream> #include <algorithm> #include <queue> using namespace std; // ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ ์ถ์๋(greater ์ฌ์ฉ๋ ๊ฐ๋ฅ) // struct compare{ // bool operator()(int a, int b){ // return a < b; // } // } int main(){ int test_case; cin >> test_case; vector<int> v; for(int i=0; i<test_case; i++){ int N, M; cin >> N >> M; queue<pair<int, int> > q; priority_queue<int, vector<int> > pq; //์๋ฃํ int, ์ปจํ
์ด๋ vector, ๊ธฐ๋ณธ๊ฐ์ ๋ด๋ฆผ์ฐจ์ for(int j=0; j<N; j++){ int element; cin >> element; q.push(make_pair(j, element)); pq.push(element); } int cnt = 0; while(!q.empty()){ int index = q.front().first; int value = q.front().second; q.pop(); if(pq.top() == value){ pq.pop(); cnt++; if(index == M){ cout << cnt << "\n"; break; } }else q.push(make_pair(index, value)); } } return 0; } | cs |
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] DFSBFS - 11725. ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2020.11.13 |
---|---|
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 1780. ์ข ์ด์ ๊ฐ์ (0) | 2020.10.21 |
[๋ฐฑ์ค] ๊ทธ๋ฆฌ๋ - 1946. ์ ์ ์ฌ์ (0) | 2020.10.01 |
[๋ฐฑ์ค] DFSBFS - 7576. ํ ๋งํ (0) | 2020.09.29 |
[๋ฐฑ์ค][์ผ์ฑ SW์ญ๋ ํ ์คํธ] 15683. ๊ฐ์ (0) | 2020.04.25 |