MODE::CREATIVE

[백준][c++] 1966번: 프린터 큐 본문

BOJ

[백준][c++] 1966번: 프린터 큐

LEE MINGYU 2024. 10. 2. 15:50

https://www.acmicpc.net/problem/1966

 

문제 해석

  • 큐를 이용한 우선순위 구하기

알고리즘 분류

  • 자료구조

풀이

  • 순서(num)와 우선순위(prioty)를 가진 class를 큐에 저장하고
  • 순회하며 제일 우선순위가 큰지 검사

코드

#include <iostream>
#include <string>
#include <vector>
#include <cmath> 
#include <algorithm>
#include <queue>
using namespace std;

int n, m, t;

class Num {
public:
    int num;
    int prioty;

    Num(int a, int b) : num(a), prioty(b){};  
};

void solution() {
    cin >> n >> m;
    queue<Num> q;
    for (int i=0; i<n; i++) {
        int prioty;
        cin >> prioty;
        q.push(Num(i, prioty));
    }

    int count = 0;

    while (!q.empty()) {
        bool flag = true; //우선순위가 가장 큰가?
        Num current = q.front();

        queue<Num> tempQ = q;
        while (!tempQ.empty()) {
            Num temp = tempQ.front();
            tempQ.pop();
            if(temp.prioty > current.prioty) {
                flag = false;
                break;
            }
        }

        q.pop();
        if (flag) {
            count++;
            if(current.num == m) {
                cout << count << "\n";
                return;
            }
        }
        else 
            q.push(current);
    }
}

int main() { 
    cin >> t;
    
    for(int i = 0; i<t; i++) solution();

    return 0;
}

'BOJ' 카테고리의 다른 글

[백준][c++] 1783번: 병든 나이트  (1) 2024.10.03
[백준][c++] 1929번: 소수 구하기  (1) 2024.10.02
[백준][c++] 2108번: 통계학  (2) 2024.10.01
[백준][c++] 2193번: 이친수  (0) 2024.09.22
[백준][c++] 2579번: 계단 오르기  (0) 2024.09.22