10773번 - 제로

의혁·2025년 1월 24일
0

[Algorithm] 알고리즘

목록 보기
25/50

💡 stack이 비어있을 겨우 pop()을 쓰면 오류 발생함으로 주의!

💡 문제를 잘 읽는 습관을 기르자

import sys

input = sys.stdin.readline

K = int(input())

stack = []

for _ in range(K):
    
    num = int(input())
    
    if num == 0 and stack:
        stack.pop()
    else:
        stack.append(num)
    
print(sum(stack))
  • 위 문제는 stack을 이용하면 너무 쉬운 문제였다.
  • 조건에 맞춰서 0이 나오면 가장 최근의 수를 지우는 것이기 떄문에 stack의 가장 윗부분을 pop()으로 드러내면 된다.
  • 지금 문제를 읽으면서 생각해보니 "0"이라는 것이 들어온다는 것은 항상 stack이 채워져있다는 의미 임으로 코드의 "and stack"부분은 필요없는거 같다.

import sys

input = sys.stdin.readline

K = int(input())

stack = []

for _ in range(K):
    
    num = int(input())
    
    if num == 0:
        stack.pop()
    else:
        stack.append(num)
    
print(sum(stack))
  • 지금 문제를 읽으면서 생각해보니 "0"이라는 것이 들어온다는 것은 항상 stack이 채워져있다는 의미 임으로 코드의 "and stack"부분을 뺴주어도 정답이었다.
profile
매일매일 차근차근 나아가보는 개발일기

0개의 댓글