Algorithm/BAEKJOON

[ C / C++ ] 백준 10866 덱

곽수진 2022. 4. 21. 22:24
반응형

문제

정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여덟 가지이다.

  • push_front X: 정수 X를 덱의 앞에 넣는다.
  • push_back X: 정수 X를 덱의 뒤에 넣는다.
  • pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 덱에 들어있는 정수의 개수를 출력한다.
  • empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
  • front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.

 

#include <iostream>
#include <deque>
#include <string>

using namespace std;

int main(int argc, char**argv) {

	ios::sync_with_stdio(0);
	cin.tie(0);
		
	deque<int> DQ;
	int N;
	
	cin >> N;
	
	while(N--){
		string str;
		cin >> str;
		
		if(str=="push_front"){
			int X;
			cin >> X;
			DQ.push_front(X);
		}
		
		else if(str=="push_back"){
			int X;
			cin >> X;
			DQ.push_back(X);
		}
		
		else if(str=="pop_front"){
			if(!DQ.empty()){
				cout << DQ.front() <<"\n";
				DQ.pop_front();
			}
			else
				cout << "-1\n";
		}
		
		else if(str=="pop_back"){
			if(!DQ.empty()){
				cout << DQ.back()<<"\n";
				DQ.pop_back();
			}
			else
				cout << "-1\n";
		}
		
		else if(str=="size"){
			cout << DQ.size() <<"\n";
		}
		
		else if(str=="empty"){
			cout << DQ.empty() <<"\n";
		}
		
		else if(str=="front"){
			if(!DQ.empty()){
				cout << DQ.front() <<"\n";
			}
			else
				cout << "-1\n";
		}
		
		else if(str=="back"){
			if(!DQ.empty()){
				cout << DQ.back() <<"\n";
			}
			else
				cout << "-1\n";
		}
	}		
	return 0;
}
반응형