일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 백준
- html
- IT 트렌드
- IT 동향
- it 이슈
- 네트워크 관리사 2급 실기
- 신문 스크랩
- SSAFYcial
- KT
- 리얼클래스
- java 객체지향 프로그래밍
- 코테
- 카카오
- it 뉴스
- 코딩테스트 연습
- 구글
- 코딩테스트
- 네트워크 관리사
- 네트워크 관리사 2급
- SSAFY
- 싸피셜
- 백준위
- SSAFY 7기
- 싸피
- python
- 인앱결제
- Java
- 프로그래머스
- 신문스크랩
- 우테코
Archives
- Today
- Total
개발자일걸요..?
1966번 프린트 큐 본문
728x90
반응형
문제 링크 : www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
<알고리즘>
1) (문서의 중요도, 몇번째 문서인지)를 pair로 만들어 queue에 저장
2) priority queue를 이용하여 중요도 순으로 문서 나열
3) priority queue 와 queue를 비교하며 중요도가 높은 문서일땐 count를 증가(몇번째에 출력되는지 알기 위해)
더 높은 중요도의 문서가 존재하면 queue의 front를 맨뒤로 이동
4) 내가 원하는 문서의 번호는 queue에 저장되어 있으므로 이를 통해 멈출 타이밍 잡기
5) count 출력
메모리 : 2016KB 시간 : 4ms
#include <iostream>
#include <queue>
using namespace std;
int main() {
int T = 0;
cin >> T;
while (T--) {
int N = 0;
int M = 0;
cin >> N >> M;
queue<pair<int,int>> q;
priority_queue<int>pq;
int input = 0;
for (int i = 0; i < N; i++) {
cin >> input;
pq.push(input);
q.push(pair<int,int>(input, i));
}
int count = 0;
while (true) {
if (q.front().first == pq.top()) {
++count;
if (q.front().second == M) {
break;
}
q.pop();
pq.pop();
}
else {
pair<int, int> temp = q.front();
q.pop();
q.push(temp);
}
}
cout << count << "\n";
}
return 0;
}
+)참고 : twpower.github.io/93-how-to-use-priority_queue-in-cpp
[C++] C++ STL priority_queue 기본 사용법과 예제
Practice makes perfect!
twpower.github.io
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
1021번 회전하는 큐 (0) | 2021.02.26 |
---|---|
10866번 덱 (0) | 2021.02.26 |
11866 요세푸스 문제0 (0) | 2021.02.25 |
2164번 카드2 (0) | 2021.02.24 |
18258번 큐2 (0) | 2021.02.24 |
Comments