백준/실버
[백준 28279번] 덱 2 (C++)
게임개발기원
2023. 8. 6. 15:58
문제링크 : https://www.acmicpc.net/problem/28279
28279번: 덱 2
첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
deque<int>dq;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
while(N--)
{
int num, x;
cin >> num;
switch(num)
{
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: //덱 비어 있는지 확인
cout<< (dq.empty() ? 1 : 0) <<"\n";
break;
case 7: //맨 앞 출력
cout << (dq.empty() ? -1 : dq.front()) <<"\n";
break;
case 8: //맨 뒤 출력
cout << (dq.empty() ? -1 : dq.back()) <<"\n";
break;
}
}
return 0;
}
덱의 기본적인 사용법을 구현한 문제이다.
크게 설명할 것은 없고 덱을 잘 안쓰다보니 기억이 나지 않아 다시 찾아보고 풀었다.
원래 if문을 주로 쓰나 이번 문제는 분기가 많아서 switch가 더 깔끔하게 보일 듯하여 오랜만에 swtich 문으로 풀어보았다.