YeJin's Footsteps

프린터 본문

Computer Science & Engineering/알고리즘

프린터

YeJinii 2021. 7. 2. 13:35

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

문제 풀이 코드

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <deque>

using namespace std;

int solution(vector<int> priorities, int location) {

    int answer = 0;
    pair <int,int> maxfile = {0,0};
    
    int T=priorities.size();
    
    deque <pair<int,int>> dq;
    
    for(int i=0; i<priorities.size(); i++){
        dq.push_back({i,priorities[i]});
    }
    
    int cnt=0;
    while(T--){
        cnt++;
        maxfile={0,0};
        
        //최댓값 찾기
        for(int i=0; i<dq.size(); i++){
            if(maxfile.second<dq[i].second){
                maxfile={i,dq[i].second};//인덱스,우선순위 값
            }             
        }
        
        //최대 배열까지 skip
        for(int i=0; i<maxfile.first; i++){
            pair <int,int> t=dq.front();
            dq.pop_front();
            dq.push_back(t);
        }
        
        pair<int,int> p=dq.front();
        if(p.first==location) {answer=cnt; break;}
        else {dq.pop_front();}        
        
    }
    
    return answer;

}

 

문제 내용 그대로

1. 우선순위가 아닌 요소는 앞에서 빼서 뒤에 삽입하고

2. 결과를 비교하기 위해 인덱스 정보도 필요했기 때문에

 

pair 자료형을 사용하여 앞에는 처음 인덱스 정보를 저장하고 뒤에는 우선순위 값을 저장하였다.

최댓값 비교는 단순 반복문을 돌려 비교하여 추출하였다.

 

1.번 사항을 실행하기 위해 deque를 사용하였다. (pop_front() 사용 가능)

 

 

우선순위 큐를 사용해볼까 생각했으나 stl이 아직 익숙하지 않아 그냥 vector랑 deque만 사용하였다.

하하하

이건 그냥 ... 끄적거려본거 ㅎㅎ

'Computer Science & Engineering > 알고리즘' 카테고리의 다른 글

정수 삼각형  (0) 2021.07.07
Algorithm Study_0703  (0) 2021.07.03
기능 개발  (0) 2021.07.02
H-Index  (0) 2021.07.01
가장 큰 수  (0) 2021.07.01
Comments