오답노트
[그래프] BOJ 10866번 덱 본문
https://www.acmicpc.net/problem/10866
- 문제 파악
덱을 구현하는 문제이다.
- 정답
덱은 앞으로도 뒤로도 값을 넣을수 있고, 반대로 앞으로도 뒤로도 값을 뺄수 있다.
#include "bits/stdc++.h"
using namespace std;
int arr[10002];
int nsize = 0;
void push_front(int k)
{
for (int i = nsize-1; i >= 0; i--)
{
arr[i + 1] = arr[i];
}
arr[0] = k;
nsize++;
}
void push_back(int k)
{
arr[nsize] = k;
nsize++;
}
void pop_front()
{
if (nsize > 0)
{
cout << arr[0] << "\n";
for (int i = 0; i < nsize; i++)
{
arr[i] = arr[i + 1];
}
nsize--;
}
else
cout << "-1\n";
}
void pop_back()
{
if (nsize > 0)
{
cout << arr[nsize-1] << "\n";
arr[nsize - 1] = 0;
nsize--;
}
else
cout << "-1\n";
}
void size()
{
cout << nsize << "\n";
}
void empty()
{
if(nsize == 0)
cout << "1\n";
else
cout << "0\n";
}
void front()
{
if (nsize > 0)
cout << arr[0] << "\n";
else
cout << "-1\n";
}
void back()
{
if (nsize > 0)
cout << arr[nsize - 1] << "\n";
else
cout << "-1\n";
}
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int n;
cin >> n;
while (n--)
{
string cmd;
int nCmd;
cin >> cmd;
if (cmd == "push_front")
{
cin >> nCmd;
push_front(nCmd);
}
else if (cmd == "push_back")
{
cin >> nCmd;
push_back(nCmd);
}
else
{
if (cmd == "pop_front")
pop_front();
else if (cmd == "pop_back")
pop_back();
else if (cmd == "size")
size();
else if (cmd == "empty")
empty();
else if (cmd == "front")
front();
else if (cmd == "back")
back();
}
}
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[그래프] BOJ 2667번 단지번호붙이기 (0) | 2022.05.21 |
---|---|
[그래프] BOJ 11724번 연결 요소의 개수 (0) | 2022.05.21 |
[그래프] BOJ 10845번 큐 (0) | 2022.05.17 |
[DP] 11722번 가장 긴 감소하는 부분 수열 (0) | 2022.05.17 |
[DP] BOJ 11055번 가장 큰 증가 부분 수열 - 오답노트 (0) | 2022.05.17 |