개발자일걸요..?

10866번 덱 본문

알고리즘코딩/Baekjoon Online Judge

10866번 덱

Re_A 2021. 2. 26. 12:46
728x90
반응형

문제링크 : www.acmicpc.net/problem/10866

 

10866번: 덱

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

www.acmicpc.net


 


 

버전 1. STL<deque> 이용 ( 메모리 : 2020KB      시간 : 384ms )

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

int main() {
	int N = 0;
	cin >> N;
	deque<int> dq;
	string commend = "";
	int a = 0;
	while (N--) {
		cin >> commend;
		if (commend == "push_front") {
			cin >> a;
			dq.push_front(a);
		}
		else if (commend == "push_back") {
			cin >> a;
			dq.push_back(a);
		}
		else if (commend == "pop_front") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.front() << "\n";
				dq.pop_front();
			}
		}
		else if (commend == "pop_back") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.back() << "\n";
				dq.pop_back();
			}
		}
		else if (commend == "size") {
			cout << dq.size() << "\n";
		}
		else if (commend == "empty") {
			cout << dq.empty() << "\n";
		}
		else if (commend == "front") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.front() << "\n";
			}
		}
		else if (commend == "back") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.back() << "\n";
			}
		}
	}
	return 0;
}

 

 

 

버전 2. STL <vector> 이용 ( 메모리 : 2020KB   시간 : 340ms )

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

int main() {
	int N = 0;
	cin >> N;
	vector<int> dq;
	string commend = "";
	int a = 0;
	while (N--) {
		cin >> commend;
		if (commend == "push_front") {
			cin >> a;
			dq.insert(dq.begin(),a);
		}
		else if (commend == "push_back") {
			cin >> a;
			dq.push_back(a);
		} 
		else if (commend == "pop_front") {
			if(dq.empty()) cout<<-1<<"\n";
			else {
				cout << dq.front() << "\n";
				dq.erase(dq.begin());
			}
		}
		else if (commend == "pop_back") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.back() << "\n";
				dq.erase(dq.end()-1);
			}
		}
		else if (commend == "size") {
			cout << dq.size() << "\n";
		}
		else if (commend == "empty") {
			cout << dq.empty() << "\n";
		}
		else if (commend == "front") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.front() << "\n";
			}
		}
		else if (commend == "back") {
			if (dq.empty()) cout << -1 << "\n";
			else {
				cout << dq.back() << "\n";
			}
		}
	}
	return 0;
}
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

5430번 AC  (0) 2021.02.27
1021번 회전하는 큐  (0) 2021.02.26
1966번 프린트 큐  (0) 2021.02.25
11866 요세푸스 문제0  (0) 2021.02.25
2164번 카드2  (0) 2021.02.24
Comments