https://school.programmers.co.kr/learn/courses/15009/lessons/121689
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค PCCP ๋ชจ์๊ณ ์ฌ 2ํ - 3๋ฒ
์์์๊ฐ ์ฝ 14๋ถ
์๋ฃ๊ตฌ์กฐ + ๋จ์ ๊ตฌํ, ์ถ์ ๋์ด๋๋ level 2
k <= 100, order.size() <= 10,000 ์ด์๊ธฐ ๋๋ฌธ์,
์๊ฐ์ ์ต๋๊ฐ์ด 1,000,000์ด๋ผ๊ณ ํ๋จํ์ฌ
๋ฐ๋ณต๋ฌธ์ ํ๋ฒ ์คํํ ๋๋ง๋ค ์๊ฐ์ 1์ด์ฉ ์ถ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฅํ์!
๊ทธ๋ฆฌ๊ณ deque์ push, pop ํจ์๋ค์ ์์์๊ฐ์ด ๋ชจ๋ O(1)์ด๊ธฐ ๋๋ฌธ์
์์ฃผ ํด๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์๋๋ค ^-^
๋ฌผ๋ก ํ๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ง๊ด์ ์ผ๋ก ํด๊ฒฐํ๋ค
๋ฒ์๊ฐ ๋ ์ปธ๋ค๋ฉด time์ 1์ด์ฉ ์ฆ๊ฐ์ํค์ง ์๊ณ
-> ์๋ฃ ์ ์์๊ฐ ๋จ์๋ก ์ฆ๊ฐ์ํค๋ฉด์ ์๊ฐ์ ์ฒดํฌํ๊ณ , ์๊ฐ์ด ์ผ์ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์๋์ ์๋ก ๋ฐ๋ ๋ฐฉ์์ผ๋ก ํด์ผํ ๊ฒ
๋์ ํ์ด
#include <string>
#include <vector>
#include <deque>
using namespace std;
int solution(vector<int> menu, vector<int> order, int k) {
int answer = 0;
int time = 0; // ํ์ฌ ์๊ฐ
int idx = 0; // ์ฃผ๋ฌธ ๋ฒํธ
deque<pair<int, int>> dq; // {๋ฉ๋ด๋ฒํธ, ์งํ์ํฉ(์๊ฐ)}
while(idx < order.size()){
if(time%k == 0){ // ์๋ ์๋ก ๋ฐฉ๋ฌธ
int menuNum = order[idx];
dq.push_back({menuNum,0});
idx++;
if(answer < dq.size()) answer = dq.size();
}
time++; // 1์ด ์ง๋จ
if(!dq.empty()){ // ์๋ฃ ์ ์
pair<int,int> now = dq.front();
dq.pop_front();
now.second++; // ์งํ์ํฉ 1์ด ์ถ๊ฐ
dq.push_front(now);
if(now.second==menu[now.first]){ // ์ ์ ์๋ฃ ์
dq.pop_front();
}
}
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 4๋ฒ - ์ด์์ฒด์ (0) | 2025.05.02 |
---|---|
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 4๋ฒ - ๋ณด๋ฌผ์ง๋ (0) | 2025.05.01 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 2๋ฒ - ์ ์ ์ฌ์ ๊ต์ก (2) | 2025.04.28 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 1๋ฒ - ์ค์ต์ฉ ๋ก๋ด (0) | 2025.04.28 |
[C++/PGS] Lv.3 : ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (ํฌํฌ์ธํฐ/์ค์ฌํ์ฅ) (0) | 2025.04.25 |