๋ฌธ์
<๋ฌธ์ ์ค๋ช >
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
- ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์(J)๋ฅผ ๋๊ธฐ๋ชฉ๋ก์์ ๊บผ๋ ๋๋ค.
- ๋๋จธ์ง ์ธ์ ๋๊ธฐ๋ชฉ๋ก์์ J๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ ๊ฐ๋ผ๋ ์กด์ฌํ๋ฉด J๋ฅผ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ต๋๋ค.
- ๊ทธ๋ ์ง ์์ผ๋ฉด J๋ฅผ ์ธ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 4๊ฐ์ ๋ฌธ์(A, B, C, D)๊ฐ ์์๋๋ก ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 2 1 3 2 ๋ผ๋ฉด C D A B ์์ผ๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์๊ณ ์ถ์ต๋๋ค. ์์ ์์์ C๋ 1๋ฒ์งธ๋ก, A๋ 3๋ฒ์งธ๋ก ์ธ์๋ฉ๋๋ค.
ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ๋ฌธ์์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์ ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์ด๋ค ์์น์ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
<์ ํ์ฌํญ>
- ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์๋ 1๊ฐ ์ด์ 100๊ฐ ์ดํ์ ๋ฌธ์๊ฐ ์์ต๋๋ค.
- ์ธ์ ์์ ์ ์ค์๋๋ 1~9๋ก ํํํ๋ฉฐ ์ซ์๊ฐ ํด์๋ก ์ค์ํ๋ค๋ ๋ป์ ๋๋ค.
- location์ 0 ์ด์ (ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ์์ ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1๋ก ํํํฉ๋๋ค.
<์ ์ถ๋ ฅ ์>
priorities | location | return |
[2, 1, 3, 2] | 2 | 1 |
[1, 1, 9, 1, 1, 1] | 0 | 5 |
https://programmers.co.kr/learn/courses/30/lessons/42587
๋ฌธ์ ํ์ด
๋ฌธ์์ ๋๊ธฐ๋ชฉ๋ก์ ํ๋ก ํํํฉ๋๋ค. ์ด๋ ํ์๋ ๊ฐ ๋ฌธ์์ (์์น, ์ค์๋)๊ฐ pair๋ก ์ ์ฅ๋์ด์์ต๋๋ค. ํญ์ ๊ฐ์ฅ ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ์ ์ผ ๋จผ์ ์ถ๋ ฅ๋๊ณ , ๋ง์ฝ ์ค์๋๊ฐ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๋๊ธฐ๋ชฉ๋ก์ ์์ ์๋ ์์๋๋ก ์ถ๋ ฅ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ priorities๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ ๋ ๊ฐ์ฅ ๋ค์ ์ค๋ ์ค์๋๋ฅผ ๊ฐ์ง ๋ฌธ์๋ถํฐ ์ถ๋ ฅ๋ฉ๋๋ค.
1. docs๋ผ๋ ํ์ ๋๊ธฐ๋ชฉ๋ก ์์๋๋ก ๊ฐ ๋ฌธ์์ (์์น, priorities) ์ฝ์ ํ๊ธฐ
2. priorities ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ (๊ฐ์ฅ ์ค์๋๊ฐ ๋์ ๊ฒ์ด ๋ค๋ก)
3. priorities์ ์์๊ฐ ์กด์ฌํ ๋ ๋ค์์ ๋ฐ๋ณต
1) ๊ฐ์ฅ ๋์ ์ค์๋(highest) ์ฐพ๊ธฐ
2) ๋๊ธฐ๋ชฉ๋ก ๋งจ ์ ๋ฌธ์๊ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒฝ์ฐ
=> ๋ฌธ์ ์ถ๋ ฅ; ๋ง์ฝ ์ฐพ๊ณ ์๋ ๋ฌธ์์ผ ๊ฒฝ์ฐ ์ ๋ต ๋ฐํ
3) 2)์ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ
=> ๋ฌธ์๋ฅผ ๋๊ธฐ๋ชฉ๋ก ๋งจ ๋ค๋ก ๋ณด๋
4) ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ๋๊น์ง 2), 3) ๋ฐ๋ณต
5) ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ฉด priorities์์ ๊ฐ์ฅ ๋์ ์ค์๋ ์ญ์
์์ค์ฝ๋
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
|
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
queue<pair<int, int>> docs; // ๊ฐ ๋ฌธ์์ (์์น, ์ค์๋) ์ ์ฅ
for (int i = 0; i < priorities.size(); i++) {
docs.push(pair<int, int>(i, priorities[i]));
}
sort(priorities.begin(), priorities.end());
while (!priorities.empty()) {
int highest = priorities.back(); // ๋จ์ ๋ฌธ์ ์ค ๊ฐ์ฅ ๋์ ์ค์๋
pair<int, int> temp;
while (1) {
// ํ์ฌ ๋ฌธ์๊ฐ ๊ฐ์ฅ ๋์ ์ค์๋๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
if (docs.front().second == highest) {
answer++;
if (docs.front().first == location)
return answer;
docs.pop();
break;
}
// ๋๊ธฐ ๋ชฉ๋ก์ ๋ ์ค์ํ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ
else {
temp = docs.front();
docs.pop();
docs.push(temp);
}
}
priorities.pop_back();
}
return answer;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฒด์ก๋ณต (0) | 2021.01.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ ๊ตญ์ฌ์ฌ ํ์ด (0) | 2020.08.16 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ ํ์ด (0) | 2020.08.14 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๊ธฐ๋ฅ๊ฐ๋ฐ ํ์ด (0) | 2020.08.13 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฃผ์๊ฐ๊ฒฉ ํ์ด (0) | 2020.08.04 |