본문 바로가기
백준 코딩테스트/실버

18258) 큐 2 (C++)

by xortl98 2022. 5. 4.
728x90

 출처 

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

 

18258번: 큐 2

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

www.acmicpc.net

 내 풀이 

#include<iostream>
#include<queue>

using namespace std;

int main()
{
	// 밑에 3개 쓰면 시간초과 사라짐 
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N = 0;
	int push_command = 0;
	string command = " ";
	queue<int>q;

	cin >> N;

	for (int i = 0; i < N; i++)
	{
		cin >> command;

		if (command == "push")
		{
			cin >> push_command;
			q.push(push_command);
		}
		else if (command == "pop")
		{
			if (q.empty()) cout << -1 << "\n";
			else
			{
				cout << q.front() << "\n";
				q.pop();
			}
		}
		else if (command == "size")
		{
			cout << q.size() << "\n";
		}
		else if (command == "empty")
		{
			if (q.empty()) cout << 1 << "\n";
			else cout << 0 << "\n";
		}
		else if (command == "front")
		{
			if (q.empty()) cout << -1 << "\n";
			else cout << q.front() << "\n";
		}
		else if (command == "back")
		{
			if (q.empty()) cout << -1 << "\n";
			else cout << q.back() << "\n";
		}
	}
}

 해설

입력받은 문자열에 따라 큐에 명령을 실행시켜주기만 하였다.

 

시간초과가 나는경우 아래의 3줄을 적으면 시간 초과를 해결할 수 있다.

 

ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

 

 느낀점 

큐에 대해 정리할 수 있는 시간이었다. 

'백준 코딩테스트 > 실버' 카테고리의 다른 글

10866) 덱 (C++)  (0) 2022.05.07
2164) 카드2 (C++)  (0) 2022.05.05
1920) 수 찾기 (C++)  (0) 2022.05.01
11053) 가장 긴 증가하는 부분 수열 (C++)  (0) 2022.04.30
9327) 이장님 초대 (C++)  (0) 2022.04.28