20250707 baekjoon
This commit is contained in:
parent
5b749cfe76
commit
81296c1bb2
60
code_study/Baekjoon/c/10828.c
Normal file
60
code_study/Baekjoon/c/10828.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int opcodeToNum(char* opcode){
|
||||||
|
if(!strcmp(opcode, "push")) return 0;
|
||||||
|
if(!strcmp(opcode, "pop")) return 1;
|
||||||
|
if(!strcmp(opcode, "size")) return 2;
|
||||||
|
if(!strcmp(opcode, "empty")) return 3;
|
||||||
|
if(!strcmp(opcode, "top")) return 4;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int N;
|
||||||
|
scanf("%d",&N);
|
||||||
|
int* stack = (int*)malloc(sizeof(int)* N);
|
||||||
|
memset(stack,0,sizeof(int)*N);
|
||||||
|
|
||||||
|
int len = 0;
|
||||||
|
while(N--){
|
||||||
|
char str[13];
|
||||||
|
if (fgets(str, sizeof(str), stdin) == NULL) break;
|
||||||
|
if (str[0] == '\n') { N++; continue; }
|
||||||
|
str[strcspn(str, "\n")] = 0;
|
||||||
|
char *opcode = strtok(str, " ");
|
||||||
|
char *operend = strtok(NULL, " ");
|
||||||
|
int opNum = opcodeToNum(opcode);
|
||||||
|
int operendNum = operend ? atoi(operend) : 0;
|
||||||
|
|
||||||
|
switch (opNum)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
stack[len] = operendNum;
|
||||||
|
len++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(len==0) {
|
||||||
|
printf("-1\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("%d\n",stack[--len]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
printf("%d\n",len);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
printf("%d\n", len ? 0 : 1);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
printf("%d\n", len ? stack[len-1] : -1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(stack);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user