-
acmicpc.net / 강의無 - No.1966 - 프린터 큐Legacy/Be Refactoring.. 2020. 7. 21. 00:42728x90
알고리즘 기초 1/2 - No.10799 - 쇠막대기
TODO
- 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.
- 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다.
Constraints
첫줄에 test case N (100이하)
Test case 1) Queue의 크기 M (문서갯수 0이상 N미만)
Test case 2) Queue의 내용 (각 문서 중요도 1이상 9이하)
Sample Input
3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1
Sample Output
1
2
5
#include <string> #include <vector> #include <queue> #include <iostream> using namespace std; int main() { int total; cin>>total; for(int i=0; i<total; i++) { vector<int> priorities; int n, location, answer = 1; cin>>n; cin>>location; queue<int> q, temp; for(int i=0; i<n; i++) { int tmp; cin>>tmp; priorities.push_back(tmp); q.push(tmp); } while(1) { int front = q.front(); temp = q; // 큐 복사물로 뒤에 우선순위 높은걸 찾기 bool check = true; while(temp.size()>0) { if(temp.front() > front) { // 우선순위 높은게 존재 q.push(front); q.pop(); location==0 ? location = q.size()-1 : location--; check = false; break; } else { // 우선순위 높은게 없음 temp.pop(); } } if(check==true) { // 복사 큐가 끝날때까지 front 보다 우선 순위 높은게 없음(q 변동 없음) front 출력 q.pop(); if(location==0) // 원하던 자료가 출력됨; break; location--; answer++; } } cout<< answer <<"\n"; } return 0; }
How I tried this :
문제와 동일했다 단지 Test case 포문 안에 기존의 코드를 넣을뿐...
What I got is :
I have to study :
Queue
문제에 관한 모든 저작권 : https://acmicpc.net
728x90'Legacy > Be Refactoring..' 카테고리의 다른 글
[programmers/Swift] 캐시 (2018 Kakao Blind Recruitment 1차) (0) 2021.02.24 [Programmers.co.kr/Swift] 삼각 달팽이 (0) 2021.02.20 [programmers/Swift] 다트게임 (2018 Kakao Blind Recruitment 1차) (0) 2020.12.02 acmicpc.net / 알고리즘 기초 1/2 - No.10799 - 쇠막대기 (0) 2020.07.16 [Programmers.co.kr/Swift] 쇠막대기 (0) 2020.07.15