๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] [PCCP ๋ชจ์˜๊ณ ์‚ฌ #2] 3๋ฒˆ - ์นดํŽ˜ ํ™•์žฅ

by xxilliant 2025. 5. 1.
728x90
๋ฐ˜์‘ํ˜•

 

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;
}

 

728x90
๋ฐ˜์‘ํ˜•