[Algorithm] - 백준 1966 프린터 큐

공부를 꾸준히 해야겠다.

어떤분의 소스를 보고 다시 공부해서 안보고 코딩을 해보고있지만,,,

아무래도 m = (m-1+n)%n; 이런 수학공식을 도출해내는 능력이 너무 부족한것 같다..

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

int arr[102];
queue<int> que;

bool cmp(int a, int b) {
return a > b;
}

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

while (testCase--) {
while (!que.empty()) que.pop();

int n, m;
cin >> n >> m;

int cnt = 0;

for (int i = 0; i < n; i++) {
int data;
cin >> data;
que.push(data);
arr[i] = data;
}

sort(arr, arr + n, cmp);

while (1) {
if (que.front() != arr[cnt]) {
que.push(que.front());
que.pop();
}
else {
if (m == 0)break;
n--;
cnt++;

que.pop();
}
m = (m - 1 + n) % n;
}

cout << cnt + 1 << '\n';
}

return 0;
}

댓글