퍼펙트코딩
퍼펙트코딩
퍼펙트코딩
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • C++ (4)
    • Phython (1)
    • C (2)
    • 프로그램 에러 (3)
    • 공부 정리글 (1)
      • 자료구조 (0)
    • 백준 (23)
      • GOLD (5)
      • BRONZE (8)
      • SILVER (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • c++
  • BOJ 3003
  • 1715 C++
  • 백준
  • 백준 23972
  • 백준 10807
  • 3003 C++
  • BOJ 1181
  • 백준 1715번
  • 9084 C++
  • 백준 9084번
  • 백준 23972번
  • BOJ 1715
  • 10807 C++
  • BOJ10807
  • 백준 3003번
  • 23972 C++
  • BOJ 23972
  • 백준 3003
  • BOJ 9084

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
퍼펙트코딩

퍼펙트코딩

백준/SILVER

[백준 1966번][C++] 프린터 큐

2022. 7. 18. 17:17
728x90
반응형

같은 우선순위 내에서 비교하는 방법을 찾아야했던 문제

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

//우선순위들을 담을 PAIR QUEUE
queue<pair<int, int>> q;

//최대 우선순위 큐가 나올때까지 큐를 순환시키는 하ㅏㅁ수
int delt_idx(int p) {

    //우선순위 p가 나올때까지 q안에 있는 우선순위를 뒤로 보낸다
    while (q.front().first != p) {
        q.push(q.front());
        q.pop();
    }

    //우선순위 p와 같은 q원소의 2번째 인자 반환
    return q.front().second;
}

int main() {
    int test;
    cin >> test;

   

    int total, index;
    int rank;
    while (test--) {
        vector<int> rank_list;
        int cnt = 1;
        cin >> total >> index;

        /*우선순위를 받아 rank_list에 저장
        q에는 우선순위와 index를 pair로 묶어 저장한다(같은 우선순위에서의 비교 위해)*/
        for (int i = 0;i < total;i++) {
            cin >> rank;
            rank_list.push_back(rank);
            q.push(pair<int, int>(rank, i));
        }

        //우선순위들을 내림차순으로 탐색하기 위한 rank_list를 정렬
        sort(rank_list.begin(), rank_list.end(), greater<int>());

        for (int i = 0;i < rank_list.size();i++) {
            int idx = delt_idx(rank_list[i]);

           
            /*우선순위가 rank_list[i]와 같은 q의 원소가
            index까지 같으면 우리가 찾는 원소이다*/
            if (idx == index) {
                cout << cnt<<'\n';
                break;
            }

            //아니라면 q의 원소를 pop하고 수행횟수 cnt 증가
            q.pop();
            cnt++;
        }

        //큐 초기화
        q = queue<pair<int, int>>();
    }

}
728x90
반응형

'백준 > SILVER' 카테고리의 다른 글

[백준 1012번][C++] 유기농 배추  (0) 2022.08.05
[백준 11726번][C++] 2×n 타일링  (0) 2022.08.04
[백준 2667번][C++] 단지 번호 붙이기  (0) 2022.08.01
[백준 1931번][C++] 회의실 배정  (0) 2022.07.29
[백준 1463번][C++] 1로 만들기  (0) 2022.07.25
    '백준/SILVER' 카테고리의 다른 글
    • [백준 11726번][C++] 2×n 타일링
    • [백준 2667번][C++] 단지 번호 붙이기
    • [백준 1931번][C++] 회의실 배정
    • [백준 1463번][C++] 1로 만들기
    퍼펙트코딩
    퍼펙트코딩

    티스토리툴바