백준 단계별문제/스택/ 파이썬 백준 10773 제로

3536 단어 백준백준


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

문제 풀이 방법

숫자를 앞에서 입력한대로 비교해서 처음 들어온 숫자가 0일 때랑 아닐때랑 먼저 처리
0이 아니면 그 숫자를 리스트에 append해줌
0이 나오면 빈 리스트일 경우 뺄 숫자가 없어서 오류 발생하므로 예외처리 해주고, 빈 리스트가 아니라면 최근 숫자를 pop 해줌

import sys

K = int(sys.stdin.readline())
stk = []

for k in range(K):
    num = int(sys.stdin.readline())
    if num == 0: # 입력 받은 숫자가 0일 경우
        if len(stk) == 0: #  예외 처리를 안해주면 처음 입력 받은 숫자가 0일 경우 뺄 숫자가 없어서 index error 발생   
            try :
                continue  # 오류 발생하면 그냥 반복문 처음부터 진행
            except :
                IndexError
        else:
            stk.pop() # 빈 리스트가 아니라면 , 마지막 단어 pop해줌
    else:
        stk.append(num) # 입력 받은 숫자가 0이 아닐 경우 그냥 리스트에 추가해줌
print(sum(stk)) # 리스트 각 요소의 합 출력를 입력하세요

코드 설명은 주석으로 자세히 적어놨음!!

다른 분 코드를 몇개 찾아보긴 했는데 예외처리 안해주는게 대부분이였다..
난 뭐가문제였을까~ㅜ

좋은 웹페이지 즐겨찾기