์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- SQL
- ์์๊ตฌํ๊ธฐ
- ์ค๋ธ์
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- ๋ฐฑ์ค
- ์ฐ์ ์์ํ
- ์๋ฃ๊ตฌ์กฐ
- ๊ทธ๋ฆฌ๋
- ์ํ
- ์์ํ์
- ์ ๋ ฌ
- ๊ทธ๋ํํ์
- db
- DFS
- ๋์ ํฉ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋์ ๊ณํ๋ฒ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋จธ์ง์ํธ
- ํ์ด์ฌ
- ๋ณํฉ์ ๋ ฌ
- ๊น์ด์ฐ์ ํ์
- ๊ทธ๋ํ
- ๋๋น์ฐ์ ํ์
- DP
- ๊ตฌํ
- LIS
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ก์ธ์ค - C++ ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ก์ธ์ค - C++
.23 2024. 4. 8. 21:44๋ฌธ์
์ด์์ฒด์ ์ ์ญํ ์ค ํ๋๋ ์ปดํจํฐ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ์์๋ ์ด์์ฒด์ ๊ฐ ๋ค์ ๊ท์น์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์์๋ด๋ฉด ๋ฉ๋๋ค.
1. ์คํ ๋๊ธฐ ํ(Queue)์์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ํ๋๋ฅผ ๊บผ๋
๋๋ค.
2. ํ์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ์ค ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ํ์ ๋ฃ์ต๋๋ค.
3. ๋ง์ฝ ๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ์คํํฉ๋๋ค.
3.1 ํ ๋ฒ ์คํํ ํ๋ก์ธ์ค๋ ๋ค์ ํ์ ๋ฃ์ง ์๊ณ ๊ทธ๋๋ก ์ข
๋ฃ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค 4๊ฐ [A, B, C, D]๊ฐ ์์๋๋ก ์คํ ๋๊ธฐ ํ์ ๋ค์ด์๊ณ , ์ฐ์ ์์๊ฐ [2, 1, 3, 2]๋ผ๋ฉด [C, D, A, B] ์์ผ๋ก ์คํํ๊ฒ ๋ฉ๋๋ค.
ํ์ฌ ์คํ ๋๊ธฐ ํ(Queue)์ ์๋ ํ๋ก์ธ์ค์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์, ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์๊ณ ์ถ์ ํ๋ก์ธ์ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- priorities์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์
๋๋ค.
- priorities์ ์์๋ 1 ์ด์ 9 ์ดํ์ ์ ์์ ๋๋ค.
- priorities์ ์์๋ ์ฐ์ ์์๋ฅผ ๋ํ๋ด๋ฉฐ ์ซ์๊ฐ ํด ์๋ก ์ฐ์ ์์๊ฐ ๋์ต๋๋ค.
- location์ 0 ์ด์ (๋๊ธฐ ํ์ ์๋ ํ๋ก์ธ์ค ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋๋ค.
- priorities์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1 … ๊ณผ ๊ฐ์ด ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
๋ด ์ฝ๋๊ฐ ์๋๋ผ ํ์๋ง์ ๋จ๊ธฐ๋ ๋ฆฌ๋ทฐ
๐ ์ฐธ๊ณ : ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ก์ธ์ค
์ฐ์ ์์๋ฅผ ์ ์ฅํ๋ priority queue์ ์ฐ์ ์์์ index ์์๋ฅผ ํจ๊ป ์ ์ฅํ๋ queue ๋ ๊ฐ์ง๋ฅผ ์ ์ธํ ๋ค, ๊ท์น์ ๋ฐ๋ผ ์คํ๋๋ค๊ณ ๊ฐ์ ํ ๋ ์ฐพ๊ณ ์ ํ๋ location์ ์์๋ฅผ ์ธ์ค๋ค.
priority queue์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ํ๋ก์ธ์ค(๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค)๋ฅผ queue์์ ์ฐพ๋๋ค.
- ๋ง์ฝ queue์ ๋งจ ์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๊ฐ ์๋๋ผ๋ฉด,
์ฐพ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๋ ์์๊ฐ ๋ฐ๋ ธ์ ๊ฒ์ด๋ฏ๋ก ๋งจ ๋ค๋ก ๊ฐ๋๋ก queue์์ popํด์ค ํ ๋ค์ push๋ฅผ ์คํํ๋ค.
- ๋ง์ฝ queue์ ๋งจ ์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๊ฐ ๋ง๋ค๋ฉด,
- ํด๋น ํ๋ก์ธ์ค์ ์์น์ location์ ๋น๊ตํ์ ๋ ์ผ์นํ์ง ์๋๋ค๋ฉด
์คํ์์๊ฐ ๊ทธ ๋ค์ ํด๋นํ ๊ฒ์ด๋ฏ๋ก count++ ํด์ค ํ, ํด๋น ์ฐ์ ์์์ ํ๋ก์ธ์ค๋ ์ด๋ฏธ ์คํ๋์๋ค ๊ฐ์ ํ์ฌ priority queue์์ pop ์ํ
- ํด๋น ํ๋ก์ธ์ค์ ์์น์ location์ด ์ผ์นํ ๊ฒฝ์ฐ
์ฐพ๊ณ ์ ํ๋ ํ๋ก์ธ์ค์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ
์ฝ๋
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 1;
priority_queue<int> pq;
queue<pair<int, int> > q;
int len = priorities.size();
for(int i = 0; i < len; i++) {
q.push({i, priorities[i]});
pq.push(priorities[i]);
}
int count = 1;
while(true) {
pair<int, int> temp = q.front();
q.pop();
if(temp.second != pq.top())
q.push(temp);
else
if(temp.first == location) {
answer = count;
break;
}
else {
count++;
pq.pop();
}
}
return answer;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] N์ผ๋ก ํํ - C++ (0) | 2024.04.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์กฐ์ด์คํฑ - C++ (0) | 2024.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ๋์งํ - C++ (0) | 2024.04.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌ๋ฐ๋ฅธ ๊ดํธ - C++ (0) | 2024.04.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ฐ๊ธฐ - C++ (0) | 2024.04.04 |