10828번 스택 풀이
[문제]
https://www.acmicpc.net/problem/10828
[입력/출력]
[ex]
시스템을 공부하면서 스택에 대한 공부를 했던 기억이있는데
직접 스택을 구현하면서 스택 구조에 대해 상기 시키는 기회가 되었습니다.
strcmp함수를 적절히 사용하여 입력한 문자열에 따라 다르게 동작하도록 코딩하였습니다.
[풀이]
#include <stdio.h>
#include <string.h>
int main()
{
int input,i,j,count = 0;
scanf("%d",&input);
char opcode[input][5];
int operand[input];
for(i = 0; i < input; i++)
{
scanf("%s",&opcode[i]);
if(!strcmp(opcode[i],"push")) // 입력한 문자열이 push일때 operand를 입력받습니다.
{
scanf("%d",&operand[count]);
count++;
}
else if(!strcmp(opcode[i],"pop")) //pop일때 operand 배열에 들어간 수 중 제일 마지막에 들어간 수를 출력합니다. (FIFO/스택구조)
{
if(count > 0)
{
printf("%d\n",operand[count - 1]);
count--;
}
else
printf("-1\n");
}
else if(!strcmp(opcode[i],"size")) //size는 count로 확인 할 수 있습니다. push 할때 +1 / pop 할때 -1을 하기 때문.
{
printf("%d\n",count);
}
else if(!strcmp(opcode[i],"empty")) //empty 역시 count 변수를 활용합니다.
{
if(count > 0)
printf("0\n");
else
printf("1\n");
}
else if(!strcmp(opcode[i],"top")) //top은 스택에 들어가 있는 가장 위의 값을 출력해줍니다.
{
if(count > 0)
printf("%d\n",operand[count - 1]);
else
printf("-1\n");
}
}
return 0;
}
이상입니다.