공부를 꾸준히 해야겠다.
어떤분의 소스를 보고 다시 공부해서 안보고 코딩을 해보고있지만,,,
아무래도 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;
}
어떤분의 소스를 보고 다시 공부해서 안보고 코딩을 해보고있지만,,,
아무래도 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;
}
댓글
댓글 쓰기