10773: 제로 - Python

beaver.zip·2024년 5월 28일
0

[알고리즘] 백준

목록 보기
6/45

문제

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

풀이 1 (정답)

arr = []
for _ in range(int(input())):
    i = int(input()) # 정수 입력
    if i != 0: # 0이 아닐 경우 
        arr.append(i) # arr에 추가
    elif i == 0 and arr: # 0이고 arr에 수가 있을 경우
        arr.pop() # pop

print(sum(arr))

쉽다.
근데 시간이 엄청 오래 걸렸다(4060ms).

풀이 2 (정답)

import sys
input = sys.stdin.readline

arr = []
for _ in range(int(input())):
    i = int(input())
    if i != 0:
        arr.append(i)
    elif i == 0 and arr:
        arr.pop()
        
print(sum(arr))

풀이 1에서 입력만 sys.stdin.readline으로 바꾸어주었다.
훨씬 빨라졌다. 이렇게 속도 차이가 큰 줄 몰랐다.

다른 사람들의 풀이를 찾아보았는데
" 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다. "
라는 지문이 있으므로, 아래와 같이 elif 대신 else를 써줘도 되겠다.

import sys
input = sys.stdin.readline

arr = []
for _ in range(int(input())):
    i = int(input())
    if i != 0:
        arr.append(i)
    else:
        arr.pop()
        
print(sum(arr))
profile
NLP 일짱이 되겠다.

0개의 댓글