문제풀이/BOJ

[Python] BOJ/백준 10828번 스택

서채리 2021. 7. 26. 17:32

[문제]

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

 

10828번: 스택

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

www.acmicpc.net

 


[풀이]

2021.07.26 - [BOJ] - [Python] BOJ/백준 10845번 큐

 

[Python] BOJ/백준 10845번 큐

[문제] https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나..

chaewsscode.tistory.com

 


[코드]

import sys


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

    def push(self, x):
        self.stack.append(x)
        self.size += 1

    def pop(self):
        if self.size == 0:
            return -1
        else:
            self.size -= 1
            return self.stack.pop()

    def my_size(self):
        return self.size

    def empty(self):
        if self.size == 0:
            return 1
        else:
            return 0

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


if __name__ == '__main__':
    stack = stack()
    n = int(sys.stdin.readline())
    for _ in range(n):
        command = sys.stdin.readline().split()
        if command[0] == 'push':
            stack.push(command[1])
        elif command[0] == 'pop':
            sys.stdout.write(str(stack.pop()))
            sys.stdout.write("\n")
        elif command[0] == 'size':
            sys.stdout.write(str(stack.my_size()))
            sys.stdout.write("\n")
        elif command[0] == 'empty':
            sys.stdout.write(str(stack.empty()))
            sys.stdout.write("\n")
        elif command[0] == 'top':
            sys.stdout.write(str(stack.top()))
            sys.stdout.write("\n")