728x90
- 문제 사이트: https://www.acmicpc.net/problem/10866
자료 구조 덱(Deque) 사용하는 법을 익히는 문제이다.
- push_front X: 정수 X를 덱의 앞에 넣는다.
- push_back X: 정수 X를 덱의 뒤에 넣는다.
- pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 덱에 들어있는 정수의 개수를 출력한다.
- empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
- front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
#include <iostream>
#include <deque>
using namespace std;
int main()
{
int N;
cin >> N;
deque<int> dq;
string str;
int x;
for (int i = 0; i < N; i++)
{
cin >> str;
if (str == "push_front")
{
cin >> x;
dq.push_front(x);
}
else if (str == "push_back")
{
cin >> x;
dq.push_back(x);
}
else if (str == "pop_front")
{
if (dq.empty())
{
x = -1;
}
else
{
x = dq.front();
dq.pop_front();
}
cout << x << "\n";
}
else if (str == "pop_back")
{
if (dq.empty())
{
x = -1;
}
else
{
x = dq.back();
dq.pop_back();
}
cout << x << "\n";
}
else if (str == "size")
{
cout << dq.size() << "\n";
}
else if (str == "empty")
{
cout << (dq.empty() ? 1 : 0) << "\n";
}
else if (str == "front")
{
cout << (dq.empty() ? -1 : dq.front()) << "\n";
}
else if (str == "back")
{
cout << (dq.empty() ? -1 : dq.back()) << "\n";
}
}
return 0;
}
- 메모리: 2024 KB
- 시간: 340 ms
- 코드 길이: 1405 B
728x90
'Algorithm > BackJoon' 카테고리의 다른 글
1158번: 요세푸스 문제 (0) | 2023.09.10 |
---|---|
1920번: 수 찾기 (0) | 2023.09.09 |
5543번: 상근날드 (0) | 2023.09.07 |
2559번: 수열 (0) | 2023.09.06 |
1373번: 2진수 8진수 (0) | 2023.09.05 |
댓글