๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ”„๋ฆฐํ„ฐ(Level 2)

by ์•ˆ์ฃผํ˜• 2022. 3. 23.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ”„๋ฆฐํ„ฐ

์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐ

programmers.co.kr

 

์ฝ”๋“œ

// 01:19(๋ฌธ์ œ ์ดํ•ด ์‹œ์ž‘)
// 01:27(๋ฌธ์ œ ๊ตฌํ˜„ ์‹œ์ž‘) ~ 01:44(ํ’€์ด ์™„๋ฃŒ)
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>

using namespace std;

int solution(vector<int> priorities, int location) {
    
    int answer = 0;
    map<int,int>docs;
    queue<int>q;
    
    
    for(int i=0; i<priorities.size(); i++){
        docs[i] = priorities[i]; // ๋ฌธ์„œ๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„ ๋ถ€์—ฌ
        q.push(i);  //๋ฌธ์„œ ์ด๋ฆ„ ๋ถ€์—ฌ
    }
    
    
    sort(priorities.begin(), priorities.end(), greater<>());
    
    
    while(!priorities.empty()){
        if(docs[q.front()]!=priorities.front()){  //ํ˜„์žฌ ๋บด๋„จ ๋ฌธ์„œ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„ ๋ฌธ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด
            int doc = q.front();
            q.pop();
            q.push(doc);
            
        }
        else{
            answer++;
            priorities.erase(priorities.begin());
            if(q.front()==location) break;
            q.pop();
        }
    }
    
    
    return answer;
}

 

ํ’€์ด(17๋ถ„)

๋จผ์ € docs๋ผ๋Š” map์„ ํ†ตํ•ด ๊ฐ ๋ฌธ์„œ์˜ key๊ฐ’์€ ์ •์ˆ˜๋กœ, value๊ฐ’์€ ์šฐ์„ ์ˆœ์œ„ ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์คฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ priorities ๋ฐฐ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ํ˜„์žฌ์˜ ๋ฌธ์„œ๊ฐ€ priorities ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด ์ธ์‡„ ํšŸ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , ์ฐพ๋Š” ๋ฌธ์„œ๊ฐ€ ํ˜„์žฌ๋ผ๋ฉด ๋ฐ”๋กœ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ˜„์žฌ ๋ฌธ์„œ๊ฐ€ priorities ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ํฐ ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๋Š” ๋ง์ด ๋˜๊ธฐ์— ๋ฌธ์ œ์˜ ์กฐ๊ฑด๋Œ€๋กœ ๋Œ€๊ธฐ์—ด์˜ ์ ค ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€