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 |