#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char command[20];
int arr[100000] = { 0, };
int n, m;
int p = 0; // 현재 위치
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", command);
if (strcmp(command, "push_front") == 0) {
scanf("%d", &m);
for (int i = p; i > 0; i--) {
arr[i] = arr[i - 1];
}
arr[0] = m;
p++;
}
else if (strcmp(command, "push_back") == 0) {
scanf("%d", &m);
arr[p] = m;
p++;
}
else if (strcmp(command, "pop_front") == 0) {
if (arr[0] == 0)
printf("-1\n");
else {
printf("%d\n", arr[0]);
for (int i = 0;i < p; i++) {
arr[i] = arr[i + 1];
}
p--;
}
}
else if (strcmp(command, "pop_back") == 0) {
if (arr[0] == 0)
printf("-1\n");
else {
printf("%d\n", arr[p - 1]);
arr[p - 1] = 0;
p--;
}
}
else if (strcmp(command, "size") == 0) {
printf("%d\n", p);
}
else if (strcmp(command, "empty") == 0) {
if (arr[0] == 0)
printf("1\n");
else
printf("0\n");
}
else if (strcmp(command, "front") == 0) {
if (arr[0] == 0)
printf("-1\n");
else
printf("%d\n", arr[0]);
}
else
if (arr[0] == 0)
printf("-1\n");
else {
printf("%d\n", arr[p - 1]);
}
}
}
오전?에 풀었던 큐와 비슷한 문제다. 덱에 대해서 찾아보고 알아보는 기회가 되었다.
큐보다 조금 더 머리 아팠다..
'프로그래밍 언어 > C언어' 카테고리의 다른 글
백준 > 10828 스택 (0) | 2021.12.21 |
---|---|
백준 > 7568 덩치 (0) | 2021.12.21 |
백준 > 10845 큐 (0) | 2021.12.21 |
백준 > 4153 직각삼각형 (0) | 2021.12.20 |
백준 > 2609 최대공약수와 최소공배수 (0) | 2021.12.19 |