큐2(18258)

들어가는 말

큐를 구현하는 방식이다. 다행히(?) C++에는 헤더 queue로 구현이 되어 있기에 그리 어렵지는 않았다. 특히 배열로 큐를 구현하면 자료를 밀어줘야 해서 복잡한데, 그냥 queue에 있는 함수로 간단하게 구현했다.

코드 설명

스택에서 구현한 방식과 동일하게 했다. 다만, 다른 점이라면 추가된 헤더 파일이 stack이 아니라 queue라는 것. 백준 문제로 돌리면 시간 초과가 나오기에 입력을 줄일 수 있는 cin.tie(0); cin.sync_with_stdio(0);를 추가해주고 endl을 \n으로 바꿨다. endl과 \n의 차이가 무엇이냐 하면 endl은 임시 메모리 공간인 버퍼를 지우고 \n은 지우지 않은 것이다. 당연히 \n이 빠른 값이 된다.

코드

#include<iostream>
#include<queue>

using namespace std;

int main() {
	cin.tie(0);
	cin.sync_with_stdio(0);

	queue<int>q;
	int n;
	string input;
	int num;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> input;
		if (input == "push") {
			cin >> num;
			q.push(num);
		}
		else if (input == "pop") {
			if (q.empty()) {
				cout << "-1\n";
			}
			else {
				cout << q.front() << "\n";
				q.pop();
			}
		}
		else if (input == "size") {
			cout << q.size() << "\n";
		}
		else if (input == "empty") {
			if (q.empty()) {
				cout << "1\n";
			}
			else {
				cout << "0\n";
			}
		}
		else if (input == "front") {
			if (q.empty()) {
				cout << "-1\n";
			}
			else {
				cout << q.front() << "\n";
			}
		}
		else if (input == "back") {
			if (q.empty()) {
				cout << "-1\n";
			}
			else {
				cout << q.back() << "\n";
			}
		}
	}

	return 0;

}

좋은 웹페이지 즐겨찾기