[백준] 18258번 큐2 (= queue2) - 재우스 프로그래밍 (C 언어)
2021. 2. 20. 17:18ㆍ백준
문제 링크 :www.acmicpc.net/problem/18258
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define DEBUG 1
#define MAX_QUEUE_SIZE 2000001
typedef struct _queue {
int mem[MAX_QUEUE_SIZE];
int front;
int back;
} queue;
queue *qu;
bool empty(queue *);
void pop(queue *);
void push(queue *, int);
size_t size(queue *);
int front(queue *);
int back(queue *);
void initQueue(queue *);
int main(void)
{
int N = 0; //명령어의 개수
int tmp = 0;
char inStr[6];
scanf("%d", &N);
qu = (queue *)malloc(sizeof(queue));
initQueue(qu);
for (int i = 0; i < N; i++) {
scanf("%s", inStr);
if (!strcmp(inStr, "empty")) {
if (empty(qu))
printf("1\n");
else
printf("0\n");
}
else if (!strcmp(inStr, "pop")) {
if (empty(qu))
printf("-1\n");
else {
tmp = front(qu);
pop(qu);
printf("%d\n", tmp);
}
}
else if (!strcmp(inStr, "push")) {
scanf("%d", &tmp);
push(qu, tmp);
}
else if (!strcmp(inStr, "size")) {
printf("%d\n", (int)size(qu));
}
else if (!strcmp(inStr, "front")) {
if (empty(qu))
printf("-1\n");
else
printf("%d\n", front(qu));
}
else if (!strcmp(inStr, "back")) {
if (empty(qu))
printf("-1\n");
else
printf("%d\n", back(qu));
}
else
printf("unknown order\n");
}
free(qu);
return 0;
}
bool empty(queue *qu)
{
if (qu->front == qu->back) { return true; }
else { return false; }
}
void pop(queue *qu)
{
qu->front++;
qu->mem[qu->front] = 0;
return;
}
void push(queue *qu, int data)
{
qu->back++;
qu->mem[qu->back] = data;
return;
}
size_t size(queue *qu) { return (size_t)(qu->back - qu->front); }
int front(queue *qu) { return qu->mem[qu->front + 1]; }
int back(queue *qu) { return qu->mem[qu->back]; }
void initQueue(queue *qu)
{
for (int i = 0; i < MAX_QUEUE_SIZE; i++)
qu->mem[i] = 0;
qu->front = -1;
qu->back = -1;
return;
}
'백준' 카테고리의 다른 글
[백준] 1927번 최소 힙 (= minimal heap) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.22 |
---|---|
[백준] 12789번 도키도키 간식드리미 (= dokidoki snack helper) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.21 |
[백준] 1937번 욕심쟁이 판다 (= greedy panda) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.20 |
[백준] 11403번 경로 찾기 (= path search) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.19 |
[백준] 1717번 집합의 표현 (= expression of set) - 재우스 프로그래밍 (C 언어) (0) | 2021.02.17 |