[코딩테스트]백준10866 덱 -C++

Coffee Time☕·2021년 4월 29일
0

코딩테스트

목록 보기
37/42

문제 풀이

  • 덱 DEQ 는 double ended queue의 약자이다.
  • 큐에서 front의 값들을 뺄 수 있었다면, deq은 뒤에도 넣고 뺄수 있는 구조이다.
  • 잘 사용하지는 않는 구조라 생소했지만 이번 기회를 통해서 정리할 수 있었다.
  • sdt::deque 의 주요 함수들
    1. emplace_front
    1. pop_front
    2. emplace_back
    3. pop_back

C++ 코드

#include <iostream>
#include <deque>

using namespace std; 

int main() {

	deque <int> d; 
	string s;
	int n;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> s;
		if (s.compare("push_front") == 0) {
			int x;
			cin >> x;
			d.push_front(x);
		}else if (s.compare("push_back") == 0) {
			int x;
			cin >> x;
			d.push_back(x);
		}
		else if (s.compare("pop_front") == 0) {
			if (d.empty())
				cout << "-1\n";
			else {
				cout << d.front() << "\n";
				d.pop_front();
			}
		}else  if (s.compare("pop_back") == 0) {
			if (d.empty())
				cout << "-1\n";
			else {
				cout << d.back() << "\n";
				d.pop_back();
			}
		}
		else if (s.compare("size") == 0) {
			cout << d.size() << "\n";
		}
		else if (s.compare("empty") == 0) {
			if (d.empty() == true)
				cout << "1\n";
			else
				cout << "0\n";
		}
		else if (s.compare("front") == 0) {
			if (d.empty())
				cout << "-1\n";
			else
				cout << d.front() << "\n";
		}
		else if (s.compare("back") == 0) {
			if (d.empty())
				cout << "-1\n";
			else
			{
				cout << d.back() << "\n";
			}

		}
	}

	return 0; 
}

0개의 댓글

관련 채용 정보