ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10828번 스택 풀이
    Programming/[BAEKJOON] acmicpc 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;

    }



    이상입니다.

    반응형

    'Programming > [BAEKJOON] acmicpc' 카테고리의 다른 글

    9012번 괄호 풀이  (0) 2018.01.20
    2941번 크로아티아 알파벳 풀이  (2) 2018.01.17
    1100번 하얀 칸 풀이  (0) 2018.01.09
    1026번 보물 풀이  (0) 2018.01.03
    1037번 약수 풀이  (2) 2018.01.02
Designed by Tistory.