Programming/[BAEKJOON] acmicpc

10828번 스택 풀이

fkillrra 2018. 1. 13. 18:18

[문제] 

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;

}



이상입니다.

반응형