728x90
문제 28279번
https://www.acmicpc.net/problem/28279
그냥 썼더니 시간 초과가 나와서 아래의 코드를 추가해줬다.
ios::sync_with_stdio(false);
cin.tie(NULL);
이번에는 if문이 아니라 switch문을 사용했다. 입력값이 뭔지에 따라 해당 case의 내용을 수행해준다. 그리고 각 case가 끝날 때마다 break한다. (break를 안 하면 다음 case를 수행하게 됨)
덱은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이기 때문에 push와 pop을 할 때 front에서 할 건지 back에서 할 건지, 그에 맞는 함수를 사용해야 한다.
#include <iostream>
#include <deque>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
deque <int> dq;
while (n--) {
int command, x;
cin >> command;
switch (command) {
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:
if (dq.empty()) {
cout << 1 << '\n';
}
else {
cout << 0 << '\n';
}
break;
case 7:
if (dq.empty()) {
cout << -1 << '\n';
}
else {
cout << dq.front() << '\n';
}
break;
case 8:
if (dq.empty()) {
cout << -1 << '\n';
}
else {
cout << dq.back() << '\n';
}
break;
}
}
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 11047번 - 동전 0 (0) | 2024.06.23 |
---|---|
[C++] 백준 2346번 - 풍선 터뜨리기 (0) | 2024.06.22 |
[C++] 백준 11866번 - 요세푸스 문제 0 (0) | 2024.06.21 |
[C++] 백준 2164번 - 카드 2 (0) | 2024.06.19 |
[C++] 백준 18258번 - 큐 2 (1) | 2024.06.17 |