[C++] 백준 10866: 덱

Cyan·2024년 1월 27일
0

코딩 테스트

목록 보기
44/166

백준 10866: 덱

문제 요약

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

문제 분류

  • 구현
  • 자료 구조

문제 풀이

덱을 구현하여 사용하는 문제이다.

pop혹은 front 등의 연산 시 데크가 비어있는지 항상 체크해야 한다.

역시 C++의 STL 문법을 사용하여 구현하면 편하다.

풀이 코드

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <deque>

using namespace std;

int main()
{
	deque<int> q;
	int n;
	string in1;
	int in2;

	cin >> n;
	while (n--) {
		cin >> in1;
		if (in1 == "push_front") {
			scanf("%d", &in2);
			q.push_front(in2);
		}
		else if (in1 == "push_back") {
			scanf("%d", &in2);
			q.push_back(in2);
		}
		else if (in1 == "pop_front") {
			if (!q.empty()) {
				printf("%d\n", q.front());
				q.pop_front();
			}
			else cout << -1 << '\n';
		}
		else if (in1 == "pop_back") {
			if (!q.empty()) {
				printf("%d\n", q.back());
				q.pop_back();
			}
			else printf("-1\n");
		}
		else if (in1 == "size") printf("%d\n", q.size());
		else if (in1 == "empty") printf("%d\n", q.empty());
		else if (in1 == "front") {
			if (!q.empty()) printf("%d\n", q.front());
			else cout << -1 << '\n';
		}
		else if (in1 == "back") {
			if (!q.empty()) printf("%d\n", q.back());
			else printf("-1\n");
		}
	}
	return 0;
}

0개의 댓글