본문 바로가기

코딩 테스트

백준 회전하는 큐

#include <iostream>
#include <algorithm>
#include <deque>
#include <math.h>
using namespace std;


int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n, m;
	int cnt = 0;
	cin >> n >> m;

	deque<int> de;

	for (int i = 0; i < n; ++i)
	{
		de.push_back(i + 1);
	}
	int current = 0;
	int index;
	for (int i = 0; i < m; ++i)
	{
		int num;
		cin >> num;

		for (int j = 0; j < de.size(); ++j)
		{
			if (de[j] == num)
			{
				index = j;
				break;
			}
		}

		int an = abs(current - index);

		if (an <= de.size() - an)
		{
			while (true)
			{
				if (de.front() == num)
				{
					de.pop_front();
					break;
				}
				cnt++;
				de.push_back(de.front());
				de.pop_front();
			}
			
		}
		else
		{
			while (true)
			{
				if (de.front() == num)
				{
					de.pop_front();
					break;
				}
				cnt++;
				de.push_front(de.back());
				de.pop_back();
			}
		}
	}

	cout << cnt;

}

'코딩 테스트' 카테고리의 다른 글

백준 11004  (0) 2024.06.11
백준 네번째점  (1) 2024.06.11
귤 고르기  (0) 2024.05.20
프로그래머스 타겟 넘버  (0) 2024.03.04
프로그래머스 피로도  (0) 2024.03.01