카테고리 없음

[Python] BOJ/백준 10773번 제로

서채리 2021. 7. 22. 03:31

[문제]

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net



[풀이]

0이 입력될 때마다 이전 값 중 가장 최근에 쓴 값을 지워야 한다.

이는 LIFO(Last In First Out) 방식을 사용하는 stack과 작동방식이 동일하다.

 

따라서 입력값을 n으로 받아 n이 0일 경우 stack에 있는 값을 pop() 하고,

(리스트.pop() 할 경우 가장 마지막 원소가 빠져나감)

n이 0이 아닐 경우에 stack에 n값을 추가해준다.

 

마지막으로 sum함수를 이용해 리스트 합을 구한다.

 


[코드]

if __name__ == '__main__':
    stack = []
    for _ in range(int(input())):
        n = int(input())
        if n == 0:
            stack.pop()
        else:
            stack.append(n)

    print(sum(stack))