728x90
#define _CRT_SECURE_NO_WARNINGS	;
#include <stdio.h>
#include <stdlib.h> //malloc 사용을 위함
#include <string.h> // memset 사용을 위함
 


void clearBuffer() {
	int c;
	while ((c = getchar()) != '\n' && c != EOF) {}
}

int main(int argc, char* argv[])
{
	int reiteration = 0; //반복 횟수
	int arg = NULL; // opcode 인자
	//int result = 0; //fgets 리턴값
	char opcode[17] = { 0 }; //int형의 최대 크기가 10자리 숫자, 공백 1자리, 명령어가 최대 5글자, 스트링 마지막 널값 10 + 1 + 5 + 1= 17
	char input[17] = { 0 };

	scanf("%d", &reiteration);
	if (!(reiteration >= 1 && reiteration <= 10000))
		return 0;
	
	int *arr = (int *)malloc(sizeof(int) * reiteration);
	int index = 0;

	clearBuffer();

	for (int i = 0; i < reiteration; i++) //문자열을 매칭하여 해당하는 함수 실행
	{
		fgets(input, 17, stdin);
		sscanf(input, "%s %d", opcode, &arg);

		
		if (index >= 0) {
			if (strstr(input, "push") != NULL)
				arr[index++] = arg;

			else if (strstr(input, "pop") != NULL)
			{
				if (index != 0)
					printf("%d\n", arr[(index--) - 1]);
				else
					printf("-1\n");
			}
				

			else if (strstr(input, "size") != NULL)
				printf("%d\n",index);

			else if (strstr(input, "empty") != NULL)
				if (index == 0)
					printf("1\n");
				else
					printf("0\n");

			else if (strstr(input, "top") != NULL)
			{
				if (index != 0)
					printf("%d\n", arr[index - 1]);
				else
					printf("-1\n");
			}
				

			else
			{
				printf("opcode Error\n");
				return 0;
			}
		}
		else
			printf("index not valid\n");
		//clearBuffer();
	}
	memset(arr, '0', 17);
	memset(input, '0', 17);

}
728x90

'C, C++ > 백준' 카테고리의 다른 글

[백준] 2231 분해합  (0) 2024.02.22
[백준] 1546 평균  (1) 2024.02.15
[백준] 1436 영화감독 숌  (1) 2024.02.10
[백준] 1259 팬린드롬수  (1) 2024.02.10
[백준] 1002번 터렛  (0) 2023.12.26

+ Recent posts