지극히 개인적인 공부 노트/알고리즘(Algorithm)

[Algorithm] 백준 10773번: 제로 | 클래스로 스택 구현

AS J 2021. 9. 1. 16:46
문제 출처: https://www.acmicpc.net/problem/10773


1. 결과

메모리 29980KB, 시간 4908ms

2. 풀이

이 문제는 솔직히 전혀 어려웠거나 어떤 이슈가 있는 것이 아니고, 직접 스택이라는 추상적 자료형을 클래스로써 구현한 코드를 담고 있기 때문에 남긴다. 파이썬의 리스트를 이용해서 구현해서 충분히 쉽게 풀이가 가능한 문제이다.

import sys


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

    def push(self, x):
        self.stack.append(x)

    def rmpop(self):
        if self.stack: self.stack = self.stack[:-1]

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

    def size(self):
        return len(self.stack)

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

def main():
    K = int(sys.stdin.readline())
    st = Stack()
    for _ in range(K):
        say = int(sys.stdin.readline())
        if say == 0: st.rmpop()
        else: st.push(say)
    result = sum(st.stack)

    return result

if __name__ == '__main__':
    print(main())