백준 10828 c

magicdrill·2024년 3월 27일

백준 문제풀이

목록 보기
219/673

백준 10828 c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)

int* stack;
int count = 0;

int input(int lower, int upper)
{
	//cout << "input()" << endl;
	int A;

	while (1)
	{
		scanf("%d", &A);
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void push(int num)
{
	stack[count] = num;
	count++;

	return;
}

void pop()
{
	if (count > 0)
	{
		count--;
		printf("%d\n", stack[count]);
		stack[count] = NULL;
	}
	else
	{
		printf("-1\n");
	}

	return;
}

void size()
{
	printf("%d\n", count);

	return;
}

void empty()
{
	if (count == 0)
	{
		printf("1\n");
	}
	else
	{
		printf("0\n");
	}

	return;
}

void top()
{
	if (count == 0)
	{
		printf("-1\n");
	}
	else
	{
		printf("%d\n", stack[count - 1]);
	}

	return;
}

int main(void)
{
	int N, i, num;
	char temp[10];

	N = input(1, 10000);
	stack = (int*)malloc(sizeof(int) * N);

	for (i = 0; i < N; i++)
	{
		scanf("%s", temp);
		if (strcmp(temp, "push") == 0)
		{
			scanf("%d", &num);
			push(num);
		}
		else if (strcmp(temp, "pop") == 0)
		{
			pop();
		}
		else if (strcmp(temp, "size") == 0)
		{
			size();
		}
		else if (strcmp(temp, "empty") == 0)
		{
			empty();
		}
		else if (strcmp(temp, "top") == 0)
		{
			top();
		}
		else
		{
			;
		}
	}

	free(stack);

	return 0;
}

0개의 댓글