안경잡이 구루루

백준 10773 (제로) [Python/파이썬] [Implement/구현] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 10773 (제로) [Python/파이썬] [Implement/구현]

구루루(gururu) 2023. 10. 15. 13:59
반응형

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

 

10773번: 제로

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

www.acmicpc.net

 


나:

import sys

input = sys.stdin.readline

k = int(input())
money = []
for i in range(k):
    a = int(input())
    if a== 0:
        money.pop(-1)
    else:
        money.append(a)

print(sum(money))

완성된 코드는 위와 같다.

 

(1)
import sys

input = sys.stdin.readline

k = int(input())
money = []

첫째 줄에 정수 k를 입력받고 다음중에는 입력값들이 들어갈 리스트 money 를 선언한다.

이때 sys 모듈을 이용해 input() 함수를 이용한다. 왜냐하면 그냥 input()만 사용시 채점할 때 '시간초과'가 떠서 sys를 사용하면 대부분의 시간초과 문제를 해결할 수 있다.

 

(2)
for i in range(k):
    a = int(input())
    if a== 0:
        money.pop(-1)
    else:
        money.append(a)

print(sum(money))

입력받은 k 만큼 반복문 for를 사용 0 이면 리스트에 차례대로 넣은 수들 중에 젤 마지막 요소를 pop()을 이용해 빼고 그 외의 경우는 리스트에 순서대로 입력값을 추가시켰다. 

최종적으로 리스트 요소들의 합을 sum()을 이용해 출력시킨다.

반응형