7월 11일(화) - 자료 구조 (10845번)
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
최초 생각 정리
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
x
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <string.h>
int queue[10001];
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년 7월' 카테고리의 다른 글
[C] 백준 - 2166번: 다각형의 면적 (1) | 2023.07.13 |
---|---|
[C] 백준 - 2217번: 로프 (0) | 2023.07.12 |
[C] 백준 - 1003번: 피보나치 함수 (0) | 2023.07.10 |
[C] 백준 - 7576번: 토마토 (0) | 2023.07.07 |
[C] 백준 - 11758번: CCW (0) | 2023.07.06 |
댓글