문제 풀이

[백준] 10773번: 제로 - Python(파이썬)

auyeol 2024. 2. 25. 10:03
728x90

 

 

문제

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

 

10773번: 제로

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

www.acmicpc.net


돈 계산을 제대로 하지 못하는 폐급 재현이 때문에 고생하는 재민이를 도와주기 위한 문제

 

재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.

 

재민이는 이렇게 모든 수를 받아 적은 후, 그 수의 합을 알고 싶어 한다.

 

→ K개의 줄에 정수가 1개씩 주어지고, 정수가 '0'일 경우에는 가장 최근에 쓴 수를 지운다. '0'이 아닌 경우에는 해당 수를 보관한다.

 

 

 

------------------------------------------------------------------------------------------------------------------

 

풀이

 

import sys

K = int(sys.stdin.readline())    # 첫 번째 줄에 정수 K가 주어진다.

ST = []             # 빈 스택 생성
sum_v = 0           # 합을 구할 sum_v 변수 초기화

for _ in range(K):  # K개의 줄에 정수가 1개씩 주어진다.
    num = int(sys.stdin.readline())  # 값 입력받기

    if ST and num == 0: # 스택에 값이 존재하고, 입력받은 값이 0이면
        ST.pop()        # 스택에서 pop()
    else:
        ST.append(num)  # 아닌경우 스택에 append()

print(sum(ST))          # 스택의 합을 출력
728x90