๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42587
์ฐ์ ์์๊ฐ ์ ํด์ ธ์๋ ๋ฌธ์๋ค์ ๋๊ธฐ๋ชฉ๋ก์ด ์ฃผ์ด์ก์ ๋ ๋ด๊ฐ ์ํ๋ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ถ๋ ฅ๋ ์ง ๋ฆฌํดํ๋ ๋ฌธ์ .
ํ์ด
- ํ์ด ์๊ณ ๋ฆฌ์ฆ
์ฃผ์ด์ง priorities๋ฅผ ์ฐ์ ์์์ด์ ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ด๋ผ ํ์ ๋, ๋๊ธฐ๋ชฉ๋ก ์ ์ผ ์. ์ฆ, 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์์ ์ฐ์ ์์๋ฅผ P๋ผ๊ณ ํ์.
1๋ฒ์งธ ๋ฌธ์๋ถํฐ ๋ง์ง๋ง ๋ฌธ์๊น์ง ์ค์์
1. P๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ด ์์ผ๋ฉด 0๋ฒ์งธ์ ์๋ ๋ฌธ์๋ฅผ ์ธ์ํ๋ค.
2. P๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๋ฌธ์๊ฐ ์๋ค๋ฉด 0๋ฒ์งธ์ ์๋ ๋ฌธ์๋ฅผ ๋๊ธฐ๋ชฉ๋ก ์ ์ผ ๋ค๋ก ๋ณด๋ธ๋ค.
์ผ๋จ ์ด๊ฒ ๊ธฐ๋ณธ์ ์ธ ๊ท์น์ด๋ค.
์ฃผ์ด์ง location์ ์ถ๋ ฅ ์์๋ฅผ ์๊ณ ์ถ์ ๋ฌธ์์ ์ธ๋ฑ์ค์ด๋ค. 0๋ฒ์งธ ๋ฌธ์๋ฅผ ์ธ์ํ๊ฑฐ๋ ๋งจ ๋ค๋ก ๋ณด๋ผ ๋๋ง๋ค location์ ํ๋์ฉ ์ค์ด๋ ๋ค. ๊ทธ๋ฌ๋ค๊ฐ location์ด 0์ด๋ ์์ ์ด ๋ด๊ฐ ์ํ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ์ฐจ๋ก๊ฐ ๋ ๊ฒ์ด๋ค.
1. ๋ด๊ฐ ์ํ๋ ๋ฌธ์๋ฅผ ์ธ์ํ ์ ์๋ค๋ฉด. ์ฆ, ๋๊ธฐ๋ชฉ๋ก์ ์ฐ์ ์์๊ฐ ๋ ๋์ ๋ฌธ์๊ฐ ์๋ค๋ฉด ์ด๋์ answer๋ฅผ ๋ฆฌํดํ๋ค.
2. ๋ฐ๋๋ก ๋ด๊ฐ ์ํ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ์ ์๋ค๋ฉด ์ด ๋ฌธ์๋ฅผ ๋๊ธฐ๋ชฉ๋ก ์ ์ผ ๋ค๋ก ๋ณด๋ด์ผํ๋ฏ๋ก
location = ๋จ์์๋ ๋ฌธ์์ ์ - 1์ด ๋๋ค. ์ฆ, priorites.size() - 1 ์ด ๋๋ค.(์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ)
์ด ๊ณผ์ ์ location์ด 0์ด ๋ ์์ ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ ๋๊น์ง ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- 0๋ฒ์งธ ๋ฌธ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ ํฐ ๋ฌธ์๊ฐ ์กด์ฌํ๋์ง ํ์ ํ๋ ๋ฐฉ๋ฒ
๋๋ lower_bound ํจ์๋ฅผ ์ฌ์ฉํด์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
lower_bound ํจ์๋ ๋ฒ์ ๋ด์์ ๋ด๊ฐ ์ ํ ๊ธฐ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฐ์ด ์ฒ์์ผ๋ก ๋ฐ๊ฒฌ๋ ์ง์ ์ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํํ๋ค. ๋ง์ฝ ๋ฆฌํด๊ฐ์ด end()์ ๊ฐ๋ค๋ฉด ๊ธฐ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฐ์ด ๋ฒกํฐ๋ด์ ์กด์ฌํ์ง ์๋๋ค๋ ๋ป์ด๋ค.
0๋ฒ์งธ ๋ฌธ์์ ์ฐ์ ์์ + 1์ ๊ธฐ์ค์ผ๋ก lower_bound() ์ ๋ฆฌํด๊ฐ์ด end()์ ๊ฐ๋ค๋ฉด 0๋ฒ์งธ ๋ฌธ์์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋๋ค๋ ๋ป์ด๋ค.
๊ทธ๋ฆฌ๊ณ lower_bound ํจ์๋ฅผ ์ฌ์ฉํ ๋์๋ ๋ฒกํฐ๊ฐ ์ ๋ ฌ๋ ์ํ์ฌ์ผํ๋ค. ๊ทธ๋ฐ๋ฐ ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์ ๋ ฌ์ํฌ ์๋ ์์ด์ temp๋ผ๋ ๋ฒกํฐ์ ๊ฐ์ ๋ณต์ฌํ ๋ค์ temp๋ฅผ ์ ๋ ฌ์์ผ์คฌ๋ค.
- ์ฝ๋ ์์ฑ
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
while(true){
vector<int> temp = priorities;
sort(temp.begin(),temp.end());
if(lower_bound(temp.begin(), temp.end(), priorities[0] + 1)
== temp.end())
{
//๋ค์ ์ฐ์ ์์๊ฐ ๋ ๋์ ๋ฌธ์๊ฐ ์์
//๋งจ ์์ ๋ฌธ์ ์ถ๋ ฅ
answer++;
if(location == 0)
break;
priorities.erase(priorities.begin());
}
else{
int temp = priorities[0];
priorities.push_back(temp);
priorities.erase(priorities.begin());
}
location--;
if(location == -1)
location = priorities.size()-1;
}
return answer;
}
|
cs |
์ ๋ต ์ ์ถ ํ, ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ max_element๋ผ๋ ํจ์๋ฅผ ์ฒ์ ์๊ฒ๋๋ค.
max_element๋ ๋ฒ์ ๋ด์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฆฌํดํด์ค๋ค.
๊ฐ์ฅ ํฐ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด ์ดํฐ๋ ์ดํฐ์ *์ ๋ถ์ฌ์ *max_element() ๋ผ๊ณ ํ๋ฉด๋๋ค.
0๋ฒ์งธ ๋ฌธ์์ ์ฐ์ ์์๊ฐ ๋๊ธฐ๋ชฉ๋ก ๋ด์์ ๊ฐ์ฅ ํฌ๋ค๋ฉด 0๋ฒ์งธ ๋ฌธ์๋ฅผ ์ธ์ํ๋ค.
priorities.begin() == max_element(priorities.begin(), priorities.end()) ๋ผ๋ฉด ์ถ๋ ฅ.
'ํ๋ก๊ทธ๋๋จธ์ค > 2๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๊ฒ ๋๋ฒ (0) | 2022.06.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2022.06.14 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ์คํ์ฑํ ๋ฐฉ (0) | 2022.06.14 |