https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
#include <iostream>
#include <deque>
using namespace std;
int main(int argc, char** argv) {
deque<int> Deque;
int left, right;
int cnt = 0;
int N, M;
cin >> N >> M;
for (int i = 1; i <= N; i++) {
Deque.push_back(i);
}
for(int i =0;i < M; i++) {
int num;
cin >> num;
for (int i = 0; i < Deque.size(); i++) {
if (Deque[i] == num) {
left = i;
right = Deque.size() - i;
break;
}
}
if (left <= right) {
while (true) {
if (Deque.front() == num)
break;
Deque.push_back(Deque.front());
Deque.pop_front();
cnt++;
}
Deque.pop_front();
}else {
cnt++;
while (true) {
if (Deque.back() == num)
break;
Deque.push_front(Deque.back());
Deque.pop_back();
cnt++;
}
Deque.pop_back();
}
}
cout << cnt;
return 0;
}
설계