알고리즘 풀이/백준

[10845] 백준 알고리즘 : 큐(C++)

데롱디롱 2019. 11. 20. 02:53
728x90

https://www.acmicpc.net/problem/10845

저번에 처음 풀었던 스택 문제와 똑같은 유형 문제였다.
스택에서 큐로 바뀌었을뿐..ㅎㅎ

STL의 queue를 사용하였다.

 

생성
· queue<자료형> 변수명;

삽입 및 삭제
· push(값); -> 맨 뒤에 값 넣기
· pop(); -> 맨 앞 원소 제거

스택 조회
· front(); -> 가장 앞에있는 값 반환
· back(); -> 가장 뒤에있는 값 반환
· empty(); -> 큐가 비어있는지 확인(true/false)
· size(); -> 큐 사이즈 반환

#include <iostream>
#include <queue>
#include <string>
using namespace std;

int main()
{
	int n = 0;
	cin >> n;
	cin.ignore();
	queue<int> q;
	string str;
	for (int i = 0; i < n; i++)
	{
		cin >> str;
		int num = 0;
		if (str.compare("front") == 0)
		{
			if (!q.empty())
				cout << q.front() << endl;
			else
				cout << -1 << endl;
		}
		else if (str.compare("back") == 0)
		{
			if (!q.empty())
				cout << q.back() << endl;
			else
				cout << -1 << endl;
		}
		else if (str.compare("empty") == 0)
		{
			if (!q.empty())
				cout << 0 << endl;
			else
				cout << 1 << endl;
		}
		else if (str.compare("size") == 0)
		{
			cout << q.size() << endl;
		}
		else if (str.compare("pop") == 0)
		{
			if (!q.empty())
			{
				cout << q.front() << endl;
				q.pop();
			}
			else
				cout << -1 << endl;
		}
		else 
		{
			cin >> num;
			q.push(num);
		}
	}

	return 0;
}

 

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

www.acmicpc.net