기록하지 않았다면 잃어버릴 시간들
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
블로그 내 검색

기록하지 않았다면 잃어버릴 시간들

새로운 것을 배우는게 즐거운 개발자입니다.

  • 알고리즘/백준

    BOJ 1966 프린터 큐 / C++

    2022. 7. 26.

    by. 내이름은 킹햄찌

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

     

    1966번: 프린터 큐

    여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

    www.acmicpc.net

    백준 온라인저지 1966번 프린터 큐 문제입니다.

     

    아이디어

    프로그래머스에 있는 프린터 문제랑 비슷한 문제입니다.

    우선큐로 작업의 순위를 담고 작업을 큐에 담에서 우선순위를 가지는 작업이 아니면 큐의 뒤로 보내고 찾는 작업이 완료되었을때 로직이 마무리 되도록 처리했습니다.

     

     

    #include<iostream>
    #include<queue>
    
    using namespace std;
    
    int t;
    
    int main(void) {
    	cin >> t;
    	
    	while (t--) {
    		int n, m;
    		int cnt = 0;
    		cin >> n >> m;
    		//프린트 큐에서 우선순위를 차례대로 정렬하는 우선 큐
    		priority_queue<int> pq;
    		//작업의 우선순위와 작업의 순서를 담을 큐
    		queue<pair<int, int>> q;
    		for (int i = 0; i < n; i++) {
    			int k;
    			cin >> k;
    			pq.push(k);
    			q.push({ k,i });
    		}
    	
    		while (true) {
    			int priority = q.front().first;
    			int pos = q.front().second;
    			q.pop();
    			//현재 최우선 순위와 현재 작업의 순위가 맞는지 확인
    			if (priority != pq.top()) {
    				q.push({ priority,pos });
    				continue;
    			}
    			//최우선 순위의 작업이 수행되었음
    			pq.pop();
    			cnt++;
    			//찾는 작업이 완료되었을때
    			if (pos == m) {
    				cout << cnt << "\n";
    				break;
    			}
    			
    		}
    	}
    }

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

    BOJ 7579 앱 / C++  (0) 2022.07.27
    BOJ 2933 미네랄 / C++  (0) 2022.07.26
    BOJ 3190 뱀 / C++  (0) 2022.07.26
    BOJ 14499 주사위 굴리기 / C++  (0) 2022.07.26
    BOJ 13460 구슬 탈출 2 / C++  (0) 2022.07.26

    댓글

    관련글

    • BOJ 7579 앱 / C++ 2022.07.27
    • BOJ 2933 미네랄 / C++ 2022.07.26
    • BOJ 3190 뱀 / C++ 2022.07.26
    • BOJ 14499 주사위 굴리기 / C++ 2022.07.26
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
내이름은 킹햄찌

티스토리툴바