백준
[백준] 1021번 회전하는 큐 (C++, DEQUE)
해랑쓰
2021. 10. 5. 11:51
728x90
반응형
왼쪽으로 빼는게 더 적은지 오른쪽으로 빼는게 더 빠른지 본 뒤 해당 위치로 이동시켜준다 (덱 사용)
뒤로 빼는 경우 맨 뒤 위치에서 앞으로 이동시켜주는 것까지 포함이라 (앞에서만 빼므로) +1 해준다.
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <vector>
#include <string>
#include <stack>
#include <deque>
using namespace std;
int n;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n,m,x;
deque<int> dq;
cin >> n >> m;
for (int i = 0; i < n; i++) {
dq.push_back(i+1);
}
int sum = 0;
for (int i = 0; i < m; i++) {
cin >> x;//위치
int left = 0,right=0;
for (int j = 0; j < dq.size(); j++) {
if (x == dq[j]) {
break;
}
left++;
}
for (int j = dq.size()-1; j >=0; j--) {
if (x == dq[j]) {
break;
}
right++;
}
right += 1;
if (left<=right) {
sum += left;
while (left--) {
dq.push_back(dq.front());
dq.pop_front();
}
dq.pop_front();
}
else {
sum +=right;
while (right--) {
dq.push_front(dq.back());
dq.pop_back();
}
dq.pop_front();
}
}
cout << sum << "\n";
return 0;
}
728x90
반응형