문제 링크 : www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

스택을 직접 구현하지 않아도 해결 가능하지만 구현해보았음

import sys

class Stack:
    def __init__(self):
        self.stack = []
        self.ptr = 0

    def push(self, data):
        self.stack.append(data)
        self.ptr += 1

    def pop(self):
        if self.ptr > 0:
            ret_value = self.stack[self.ptr - 1]
            del self.stack[self.ptr - 1]
            self.ptr -= 1

            return ret_value
        else:
            return -1

    def top(self):
        if self.ptr > 0:
            return self.stack[self.ptr - 1]
        else:
            return -1

    def size(self):
        return self.ptr

    def empty(self):
        if self.ptr > 0:
            return 0
        else:
            return 1


N = int(sys.stdin.readline())
stack = Stack()
for _ in range(N):
    op = sys.stdin.readline().strip().split()

    if 'push' == op[0]:
        data = int(op[1])
        stack.push(data)
    elif 'pop' == op[0]:
        print(stack.pop())
    elif 'size' == op[0]:
        print(stack.size())
    elif 'empty' == op[0]:
        print(stack.empty())
    elif 'top' == op[0]:
        print(stack.top())

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1932번 - 정수 삼각형  (0) 2021.01.02
[백준] 9461번 - 파도반 수열  (0) 2021.01.02
[백준] 1541번 - 잃어버린 괄호  (0) 2020.12.29
[백준] 1931번 - 회의실배정  (0) 2020.12.28
[백준] 1920번 - 수 찾기  (0) 2020.12.24

+ Recent posts