본문 바로가기

스파르타코딩 내일배움캠프

내일배움캠프 - TIL 39 - 스택. 백준 10773

스택의 사용 사례: 

 

ctrl + z

뒤로가기

 

Last In First Out. 

First In Last Out. 대한민국 공군 공정통제사(CCT)의 모토. 

 

내가 처음 작성한 코드. 

 

def solution(n):
    list_one = []
    for x in range(n):
        num = int(input())
        if num != 0:
            list_one.append(num)
        else:
            list_one.pop()
        if x == (n-1):
            final = sum(list_one)
            break
    return final

print(solution(n))

계속 "런타임 에러"가 떴다. 

 

알고 봤더니, 입력의 첫줄은 정수 K의 입력인데, 그걸 빼 먹었다. 함수의 (n)이 입력 값 받는 것이라고 생각하고 있었는데, 따로 넣어줘야 했다. 

 

import sys
list_one = []
one_input = int(sys.stdin.readline())
def solution(n):
    for x in range(n):
        num = int(sys.stdin.readline().strip())
        if num != 0:
            list_one.append(num)
        else:
            list_one.pop()
    return sum(list_one)


print(solution(one_input))

이렇게 하니까 정답으로 떴다. 

 

그러나 함수 없이 그냥 입력 값을 받을 때가 시간이 더 적었다. 

from sys import stdin

num_list = []
a = int(stdin.readline())

for i in range(a):
    num = int(stdin.readline())
    if num != 0:
        num_list.append(num)
    else:
        num_list.pop()
print(sum(num_list))

이건 팀원의 답이다. 

 

아무래도 실행하는 코드 줄이 적어서 인 것 같다. 

 

어떻게 하면 실행 시간이 적어지는 아직 알기가 어렵다. 웬지 결국엔 C를 배워야 할 것 같다. 파이썬으로 실행시간을 줄이려고 하는 것은 안개속을 걷는 것 같다.