Backjoon Online Judge
"1966번 : 프린터 큐" 문제입니다.
문제 링크 : https://www.acmicpc.net/problem/1966
문서의 중요도를 확인하기 위해 중요도를 저장하는 배열을 만들었고, Sort함수로 정렬하여 중요도를 큰 것부터 확인하였습니다.
- queue에서 문서가 제거 될 때 인쇄되는 횟수를 증가시키고 선택한 문서의 위치가 0인지 확인하여 출력 여부를 확인하였습니다.
- 문서가 제거되지 않을 때는 큐의 맨 뒤에 다시 집어넣고 문서의 위치를 1 감소시켰습니다.
코드는 C++로 작성하였습니다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #define Max 100 using namespace std; int main() { int testCase, N, M, data, when; int arr[Max]; queue<int> q; cin >> testCase; while (testCase--){ //memset(arr, 0, sizeof(arr)); when = 0; cin >> N >> M; for(int i=0; i<N; i++) { cin >> data; q.push(data); arr[i] = data; } sort(arr, arr + N); while (1) { if (arr[N - 1] == q.front()) { q.pop(); when++; if (M == 0) { break; } N--; M--; } else { q.push(q.front()); q.pop(); M--; if (M < 0) { M += N; } } } cout << when << endl; while (!q.empty()) { q.pop(); } } return 0; } |
'Programming 문제풀이 > Backjoon Online Judge' 카테고리의 다른 글
5430번 : AC (0) | 2018.03.28 |
---|---|
1021번 : 회전하는 큐 (0) | 2018.03.27 |
10866번 : 덱 (0) | 2018.03.24 |
1158번 : 조세퍼스 문제 (0) | 2018.03.23 |
11866번 : 조세퍼스 문제 0 (0) | 2018.03.23 |