๋ฌธ์ ์ค๋ช
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
1. ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์(J)๋ฅผ ๋๊ธฐ๋ชฉ๋ก์์ ๊บผ๋ ๋๋ค. 2. ๋๋จธ์ง ์ธ์ ๋๊ธฐ๋ชฉ๋ก์์ J๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ ๊ฐ๋ผ๋ ์กด์ฌํ๋ฉด J๋ฅผ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ต๋๋ค. 3. ๊ทธ๋ ์ง ์์ผ๋ฉด 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 |
๋ด ํด๋ต
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int max = 0;
queue<int> queue;
// ๋๊ธฐ ๋ชฉ๋ก์ ๋ฃ๊ธฐ
for(int i = 0; i < priorities.size(); ++i)
queue.push(i);
// ๋๊ธฐ ๋ชฉ๋ก์์ ์ต์ฐ์ ์์ ์ฐพ๊ธฐ
for(int i = 0; i < priorities.size(); ++i)
max = max < priorities[i] ? priorities[i] : max;
while(!queue.empty())
{
int front = queue.front();
queue.pop();
// ๋๊ธฐ๋ชฉ๋ก ์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ ์ต์ฐ์ ์์๊ฐ ์๋๋ผ๋ฉด ๋ค๋ก ๋ณด๋ธ๋ค
if(priorities[front] < max)
queue.push(front);
// ์ต์ฐ์ ์์๋ผ๋ฉด ๋๊ธฐ ๋ชฉ๋ก์์ ๋ด๋ณด๋ธ๋ค.
else
{
answer++;
priorities[front] = -1;
// ์ฐพ๋ ๋ฌธ์๋ผ๋ฉด ์์๋ฅผ ๋ฐํํ๋ค.
if(front == location)
return answer;
else
{
// ๋๊ธฐ ๋ชฉ๋ก์์ ์ต์ฐ์ ์์ ์ฐพ๊ธฐ
max = 0;
for(int i = 0; i < priorities.size(); ++i)
max = max < priorities[i] ? priorities[i] : max;
}
}
}
return -1;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ์ฃผ์๊ฐ๊ฒฉ(C++) (0) | 2023.03.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ(C++) (0) | 2023.03.21 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๊ธฐ๋ฅ๊ฐ๋ฐ(C++) (0) | 2023.03.16 |
programmers / level.1 / ๊ฐ์ ์ซ์๋ ์ซ์ด(C++) (0) | 2023.03.14 |
programmers / level.3 / ๋ฒ ์คํธ์จ๋ฒ(C++) (0) | 2023.03.14 |