프로그래밍 언어/C언어
백준 > 10866 덱
B612
2021. 12. 21. 16:23
#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]);
}
}
}
오전?에 풀었던 큐와 비슷한 문제다. 덱에 대해서 찾아보고 알아보는 기회가 되었다.
큐보다 조금 더 머리 아팠다..