GitHubSeob
C++ / 백준 / 10866 / 덱 본문
문제
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
문제풀이
deque를 이용해 풀었다.
- push_front는 dq.push_front()
- push_back은 dq.push_back()
- pop_front는 비어있지 않다면 dq.front() 값을 출력하고 dq.pop_front()를, 비어있다면 -1을 출력한다.
- pop_back는 비어있지 않다면 dq.back() 값을 출력하고 dq.pop_back()를, 비어있다면 -1을 출력한다.
- size는 dq.size()
- empty는 dq.empty()
- front는 비어있지 않다면 dq.front() 값을 출력하고, 비어있다면 -1을 출력한다.
- back은 비어있지 않다면 dq.back() 값을 출력하고, 비어있다면 -1을 출력한다.
마지막으로 push_front or push_back을 제외한 명령이 입력되면 줄 바꿈을 해준다.
코드
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N(0), num(0);
cin >> N;
string cmd("");
deque<int>dq;
while (N--) {
cin >> cmd;
if (cmd == "push_front") {
cin >> num;
dq.push_front(num);
}
else if (cmd == "push_back") {
cin >> num;
dq.push_back(num);
}
else if (cmd == "pop_front") {
if (!dq.empty()) {
cout << dq.front();
dq.pop_front();
}
else cout << -1;
}
else if (cmd == "pop_back") {
if (!dq.empty()) {
cout << dq.back();
dq.pop_back();
}
else cout << -1;
}
else if (cmd == "size") {
cout << dq.size();
}
else if (cmd == "empty") {
cout << dq.empty();
}
else if (cmd == "front") {
if (!dq.empty()) {
cout << dq.front();
}
else cout << -1;
}
else if (cmd == "back") {
if (!dq.empty()) {
cout << dq.back();
}
else cout << -1;
}
if (cmd.substr(0, 4) != "push")
cout << '\n';
}
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 1935 / 후위 표기식2 (0) | 2022.03.13 |
---|---|
C++ / 백준 / 1966 / 프린터 큐 (0) | 2022.03.11 |
C++ / 백준 / 2164 / 카드2 (0) | 2022.03.07 |
C++ / 백준 / 9012 / 괄호 (0) | 2022.03.07 |
C++ / 백준 / 10828 / 스택 (0) | 2022.03.07 |