4월 14일(금) - 큐, 덱 (18258번)
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
최초 생각 정리
- 작년 자료구조 강의 참고
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이
(참고 -> https://dalconbox.tistory.com/52 )
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <string.h>
int queue[2000001];
int front = 0;
int rear = -1;
void init(char arr[])
{
for (int i = 0; i < 10; i++)
{
arr[i] = '\0';
}
}
void push(int x)
{
queue[++rear] = x;
}
void pop()
{
if (rear - front + 1 == 0)
{
printf("%d\n", -1);
}
else
{
printf("%d\n", queue[front++]);
}
}
void size()
{
printf("%d\n", rear - front + 1);
}
void empty()
{
if (rear - front + 1 != 0)
{
printf("%d\n", 0);
}
else
{
printf("%d\n", 1);
}
}
int main(void)
{
int N;
scanf("%d", &N);
int x;
char command[10];
for (int i = 0; i < N; i++)
{
scanf("%s", command);
if (!strcmp(command, "push"))
{
scanf("%d", &x);
push(x);
}
else if (!strcmp(command, "pop"))
{
pop();
}
else if (!strcmp(command, "size"))
{
size();
}
else if (!strcmp(command, "empty"))
{
empty();
}
else if (!strcmp(command, "front"))
{
if (rear - front + 1 == 0)
{
printf("%d\n", -1);
}
else
{
printf("%d\n", queue[front]);
}
}
else if (!strcmp(command, "back"))
{
if (rear - front + 1 == 0)
{
printf("%d\n", -1);
}
else
{
printf("%d\n", queue[rear]);
}
}
init(command);
}
return 0;
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
'백준(C언어) > 23년 4월' 카테고리의 다른 글
[C] 백준 - 11866번: 요세푸스 문제0 (0) | 2023.04.18 |
---|---|
[C] 백준 - 2164번: 카드 2 (0) | 2023.04.17 |
[C] 백준 - 1874번: 스택 수열 (0) | 2023.04.13 |
[C] 백준 - 4949번: 균형잡힌 세상 (0) | 2023.04.12 |
[C] 백준 - 9012번: 괄호 (0) | 2023.04.11 |
댓글