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

10866) 덱 (C++)

by xortl98 2022. 5. 7.
728x90

 출처 

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

 

10866번: 덱

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

www.acmicpc.net

 내 풀이 

#include<iostream>
#include<deque>

using namespace std;

deque<int> dq;
string command = "";
int push_number = 0;
int N = 0;	//명령어 수

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

	cin >> N;

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

		if (command == "push_front")
		{
			cin >> push_number;
			dq.push_front(push_number);
		}
		else if (command == "push_back")
		{
			cin >> push_number;
			dq.push_back(push_number);
		}
		else if (command == "pop_front")
		{
			if (dq.empty()) cout << -1 << endl;
			else
			{
				cout << dq.front() << endl;
				dq.pop_front();
			}
		}
		else if (command == "pop_back")
		{
			if (dq.empty()) cout << -1 << endl;
			else
			{
				cout << dq.back() << endl;
				dq.pop_back();
			}
		}
		else if (command == "size")
		{
			cout << dq.size() << endl;
		}
		else if (command == "empty")
		{
			if (dq.empty()) cout << 1 << endl;
			else cout << 0 << endl;
		}
		else if (command == "front")
		{
			if (dq.empty()) cout << -1 << endl;
			else cout << dq.front() << endl;
		}
		else if (command == "back")
		{
			if (dq.empty()) cout << -1 << endl;
			else cout << dq.back() << endl;
		}
	}
}

 해설

데큐를 선언하고 나오는 명령에 따라 그대로 출력만 해주면 된다.

 느낀점 

처음 데큐에 대해 알게 되었다. 큐랑 벡터 말고도 필요할 때 활용할 수 있을 듯 

 

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

10989) 수 정렬하기 3 (C++)  (0) 2022.05.07
2751) 수 정렬하기 2 (C++)  (0) 2022.05.07
2164) 카드2 (C++)  (0) 2022.05.05
18258) 큐 2 (C++)  (0) 2022.05.04
1920) 수 찾기 (C++)  (0) 2022.05.01