https://school.programmers.co.kr/learn/courses/30/lessons/42587
ํ๋ก์ธ์ค์ ์ฐ์ ์์ ๊ฐ์ด ๋ค์ด ์๋ priorities๋ฒกํฐ์ ์๊ณ ์ถ์ ํ๋ก์ธ์ค์ ์์น์ธ location ๊ฐ์ด ์ฃผ์ด์ง๋ค.
location ์์น์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋ ์ง๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
*ํ์ด๋ฐฉ๋ฒ
priorities ๊ธธ์ด๊ฐ 100 ๋ฐ์ ์๋๊ธธ๋, 100! ๋ฒ ์ฐ์ฐํ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ณ ํ์ค์ฉ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๊น๋?ํ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ ๊ฑฐ ๊ฐ๊ธดํ๋ฐ... ์ฐ์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ๋จผ์ง๋ฅผ ์์๋ด๋ ๊ฒ ๋ถํฐ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋๋๊น, ์ฐ์ฐ์ ์ค์ด๋๊ฒ ์๋ฏธ๊ฐ ์์ ๊ฑฐ ๊ฐ์๋ค.
1) ๊ทธ๋ฅ ๋จ์ํ๊ฒ priorities ๋ฒกํฐ๋ฅผ ์์์ ๋นผ๊ณ ๋ค๋ก ๋ฃ์ผ๋ index๊ฐ ๊ณ์ ๋ฐ๊ปด์ location ๊ฐ๋ ๊ณ์ ๋ณ๊ฒฝ์ด ํ์ํ๋ค. ๊ทธ๋์ index๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด์ 0๋ถํฐ priorities.size()-1 ๊น์ง ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํด๋์๋ค.
2) ๋ฒกํฐ์ max_element ํจ์๋ก priorities ๋ฒกํฐ์์ ๊ฐ์ฅ ํฐ ์ฐ์ ์์๋ฅผ ๊ฐ๋ ํ๋ก์ธ์ค์ ์ธ๋ฑ์ค๋ฅผ ์์๋ธ๋ค.
3) ์ฐ์ ์์ ํ๋ก์ธ์ค ์ ๊น์ง ์์ ๊ฐ๋ค์ ๋ค ๋ค๋ก ๋ณด๋ธ๋ค.
4) ๋งจ ์์ ์์นํ๊ฒ ๋ ์ต์ฐ์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋นผ๋ธ๋ค.
5) ์ด ๋ ๋นผ๋ธ ์ด ๊ฐ์ ์ธ๋ฑ์ค๊ฐ์ด location๊ณผ ๊ฐ๋ค๋ฉด ์ด์์ฒด์ ๋ฅผ ์ข ๋ฃํ๊ณ answer๋ฅผ ๋ฐํํ๋ค.
*์์๋ ๊ฒ
1) ๋ฒกํฐ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ธ๋ฑ์ค ์์๋ด๊ธฐ
int max_index = max_element(v.begin(), v.end())-v.begin();
max_element๊ฐ ์ฃผ์๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์๊ณ ์ถ์ผ๋ฉด *max_element()๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค!
2) ๋ฒกํฐ์ ๋งจ ์ ๊ฐ ๋นผ๊ธฐ
v.erase(v.begin());
3) ๋ฒกํฐ์ ๊ฐ์ฅ ์์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
v.front();
*์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int priority_index = 0;
//์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ฒกํฐ ์์ฑ
vector<int> index_vector;
for(int i = 0; i < priorities.size(); i++){
index_vector.push_back(i);
}
//ํ๋ก์ธ์ค ๊บผ๋ด๊ธฐ
while(1){
//๊ฐ์ฅ ์ฒ์ ๋นผ๋ผ ์ฐ์ ์์ ์ธ๋ฑ์ค ์ ์ฅ
priority_index = max_element(priorities.begin(), priorities.end())-priorities.begin();
//์ฐ์ ์์ ์ธ๋ฑ์ค์ ๊ฐ ์ ๊น์ง ๋ค ๋ค๋ก ๋ณด๋ด๊ธฐ
for(int i = 0; i < priority_index; i++){
priorities.push_back(priorities.front());
priorities.erase(priorities.begin());
//์ธ๋ฑ์ค ๋ฒกํฐ ๊ฐ๋ ๋ค๋ก ๋ณด๋ด๊ธฐ
index_vector.push_back(index_vector.front());
index_vector.erase(index_vector.begin());
}
//์ฐ์ ์์ ์ธ๋ฑ์ค ๋นผ๋ด๊ธฐ
priorities.erase(priorities.begin());
//๋นผ๋ผ๋๋ง๋ค ์นด์ดํธ ์ธ๊ธฐ
answer++;
//๋นผ๋ธ ์ธ๋ฑ์ค ๊ฐ์ด location๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ํ๋ก์ธ์ค ์ข
๋ฃ
if(location == index_vector.front()) break;
//๋ค๋ฅด๋ค๋ฉด ์ธ๋ฑ์ค ๋ฐฐ์ด์์๋ ๋งจ ์ ๊ฐ ๋นผ๊ณ ๋ค์ ํ๋ก์ธ์ค ์งํ
index_vector.erase(index_vector.begin());
}
return answer;
}
'๐ Coding Test Study > Algorithm Problem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++][Programmers][์คํ/ํ] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2023.06.04 |
---|---|
[C++][Programmers][์คํ/ํ] ์ฃผ์๊ฐ๊ฒฉ (0) | 2023.06.04 |
[C++][Programmers][์คํ/ํ] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2023.05.18 |
[C++][Programmers][์คํ/ํ] ๊ฐ์ ์ซ์๋ ์ซ์ด (0) | 2023.05.18 |
[C++][Programmers][ํด์] ์์ (feat. hash map ๋ฐ๋ณต๋ฌธ) (0) | 2023.05.16 |