백준 10845 - 큐

황재진·2024년 3월 19일

백준

목록 보기
29/54
post-thumbnail

큐 자료구조에 대해 이해하고 있다면 쉽게 해결할 수 있는 문제입니다.

저는 별도로 queue 객체를 만들지 않고 빠른 문제 해결을 위해 단순히 main 함수에 동적 배열과 queue의 양끝을 가리키는 front와 rear 변수를 만들고 메모리 효율을 위해 원형 큐 처럼 접근했습니다.

#include <iostream>

int main()
{
	int n;
	std::cin >> n;

	int* queue = new int[n];
	int front = n;
	int rear = n;

	std::string in;
	for (int i = 0; i < n; i++)
	{
		std::cin >> in;

		if (in.compare("push") == 0)
		{
			int temp;
			std::cin >> temp;

			queue[front % n] = temp;
			front++;
		}
		else if (in.compare("pop") == 0)
		{
			if (front == rear)
				std::cout << "-1\n";
			else
			{
				std::cout << queue[(rear++) % n] << "\n";
			}
		}
		else if (in.compare("size") == 0)
		{
			std::cout << front - rear << "\n";
		}
		else if (in.compare("empty") == 0)
		{
			if (front == rear)
				std::cout << "1\n";
			else
				std::cout << "0\n";
		}
		else if (in.compare("front") == 0)
		{
			if (front == rear)
				std::cout << "-1\n";
			else
				std::cout << queue[rear % n] << "\n";
		}
		else if (in.compare("back") == 0)
		{
			if (front == rear)
				std::cout << "-1\n";
			else
				std::cout << queue[(front - 1) % n] << "\n";
		}
	}


	return 0;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글