본문 바로가기

Algorithm/스택과 큐

백준 큐 2(18258) C++ 풀이

알고리즘 분류

자료 구조

문제 해결 아이디어

vector를 이용하여 큐를 구현하면서 빠른 시간 초과를 요구하기에, 시간을 잡아먹는 empty()부분을 
직접 구현해야 한다.

코드

#include <iostream>
#include <vector>
using namespace std;
#define EMPTY 111111

int n;
vector<int> queue;
int check = 0;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n;

	string s;
	int num;
	while (n--)
	{
		cin >> s;
		if (s == "push")
		{
			cin >> num;
			queue.push_back(num);
		}
		else if (s == "pop")
		{
			if (queue.size() - check == 0) cout << "-1" << '\n';
			else
			{
				cout << queue[check] << '\n';
				queue[check] = EMPTY;
				check++;
			}
		}
		else if (s == "size")
		{
			cout << queue.size() - check << '\n';
		}
		else if (s == "empty")
		{
			if (queue.size() - check == 0) cout << 1 << '\n';
			else cout << 0 << '\n';
		}
		else if (s == "front")
		{
			if (queue.size() - check == 0) cout << "-1" << '\n';
			else cout << queue[check] << '\n';
		}
		else if (s == "back")
		{
			if (queue.size() - check == 0) cout << "-1" << '\n';
			else cout << queue.back() << '\n';
		}
	}
}