본문 바로가기

Algorithm/BAEKJOON

[BOJ] 1021번 회전하는 큐 (C++)

728x90
반응형

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 n, m, num, index, count = 0;
	deque<int> d;
 
	cin >> n >> m;
 
	for (int i = 1; i <= n; ++i) {
		d.push_back(i);
	}
 
	while (m--){
		cin >> num;
 
		for (int i = 0; i < d.size(); ++i) {
			if (d[i] == num) {
				index = i;
				break;
			}
		}
 
		if (index < d.size() - index) {
			while (1) {
				if (d.front() == num) {
					d.pop_front();
					break;
				}
				++count;
				d.push_back(d.front());
				d.pop_front();
			}
		}
		else {
			while (1) {
				if (d.front() == num) {
					d.pop_front();
					break;
				}
				++count;
				d.push_front(d.back());
				d.pop_back();
			}
		}
	}
	cout << count << endl;
	
	return 0;
}

 

 

deque 자료구조를 연습해 볼 수 있는 좋은 문제였당

728x90
반응형