백준/실버

[백준 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 문으로 풀어보았다.