프로그래밍 언어/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]);
			}
	}
}

오전?에 풀었던 큐와 비슷한 문제다. 덱에 대해서 찾아보고 알아보는 기회가 되었다.

큐보다 조금 더 머리 아팠다..

'프로그래밍 언어 > 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