카테고리 없음
[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))