본문 바로가기

백준/C++

[C++] 백준 28279번 - 덱 2

728x90

 

문제 28279번

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

 

그냥 썼더니 시간 초과가 나와서 아래의 코드를 추가해줬다.

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

 

이번에는 if문이 아니라 switch문을 사용했다. 입력값이 뭔지에 따라 해당 case의 내용을 수행해준다. 그리고 각 case가 끝날 때마다 break한다. (break를 안 하면 다음 case를 수행하게 됨)

 

덱은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이기 때문에 push와 pop을 할 때 front에서 할 건지 back에서 할 건지, 그에 맞는 함수를 사용해야 한다.

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

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

	int n;
	cin >> n;
	deque <int> dq;
	while (n--) {
		int command, x;
		cin >> command;
		switch (command) {
		case 1:
			cin >> x;
			dq.push_front(x);
			break;

		case 2:
			cin >> x;
			dq.push_back(x);
			break;
		case 3:
			if (dq.empty()) {
				cout << -1 << '\n';
			}
			else {
				cout << dq.front() << '\n';
				dq.pop_front();
			}
			break;
		case 4:
			if (dq.empty()) {
				cout << -1 << '\n';
			}
			else {
				cout << dq.back() << '\n';
				dq.pop_back();
			}
			break;
		case 5:
			cout << dq.size() << '\n';
			break;
		case 6:
			if (dq.empty()) {
				cout << 1 << '\n';
			}
			else {
				cout << 0 << '\n';
			}
			break;
		case 7:
			if (dq.empty()) {
				cout << -1 << '\n';
			}
			else {
				cout << dq.front() << '\n';
			}
			break;
		case 8:
			if (dq.empty()) {
				cout << -1 << '\n';
			}
			else {
				cout << dq.back() << '\n';
			}
			break;
		}
	}

	return 0;
}

 

 

 

 

728x90

'백준 > C++' 카테고리의 다른 글

[C++] 백준 11047번 - 동전 0  (0) 2024.06.23
[C++] 백준 2346번 - 풍선 터뜨리기  (0) 2024.06.22
[C++] 백준 11866번 - 요세푸스 문제 0  (0) 2024.06.21
[C++] 백준 2164번 - 카드 2  (0) 2024.06.19
[C++] 백준 18258번 - 큐 2  (1) 2024.06.17