본문 바로가기
온라인저지

[BOJ] 10828번: 스택

by plzfday 2018. 7. 26.

https://www.acmicpc.net/problem/10828

6달 전에 짠 코드는 4ms가 나왔는데 똑같은 코드로 이틀 전에 제출했더니 0ms가 나왔다. ㅋㅋㅋ 재미있네

이런 문제는 사실 N의 제한이 있기 때문에 굳이 링크드 리스트로 구현할 필요는 없다. 

그리고 문자열을 다 볼 필요 없이 앞 1~2자리만 봐도 어떤 입력인지 알 수 있다.

#include <stdio.h>
#include <string.h>
#define MAX 10001

typedef struct stack
{
    int Stack[MAX];
    int size;
    int empty;
    int top;
} stack;
stack Stk;
int main()
{
    Stk.empty = 1, Stk.size = 0;
    int N;
    scanf("%d", &N);

    for (int i = 1; i <= N; ++i)
    {
        char str[10];
        scanf("%s", str);
        switch (str[0])
        {
        case 'p':
            if (str[1] == 'u')
            {
                int input;
                scanf("%d", &input);
                Stk.Stack[Stk.size] = input;
                Stk.top = input;
                Stk.empty = 0;
                Stk.size++;
            }
            else
            {
                if (Stk.size != 0)
                {
                    int top = Stk.Stack[Stk.size - 1];
                    Stk.Stack[Stk.size - 1] = 0;
                    Stk.size--;
                    Stk.top = Stk.Stack[Stk.size - 1];
                    printf("%d\n", top);
                    break;
                }
                else
                {
                    Stk.empty = 1;
                    printf("%d\n", -1);
                    break;
                }
            }
            break;
        case 't':
            printf("%d\n", (Stk.size <= 0) ? -1 : Stk.top);
            break;
        case 's':
            printf("%d\n", Stk.size);
            break;
        case 'e':
            printf("%d\n", Stk.size <= 0 ? 1 : 0);
            break;
        }
    }
    return 0;
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 10799번: 쇠막대기  (0) 2018.07.26
[BOJ] 9012번: 괄호  (0) 2018.07.26
[BOJ] 10845번: 큐  (0) 2018.07.26
[BOJ] 1158번: 조세퍼스 문제  (0) 2018.07.26
[BOJ] 1157번: 단어 공부  (0) 2018.07.26
[BOJ] 15904번: UCPC는 무엇의 약자일까?  (0) 2018.07.26

댓글