Algorithm/BOJ

[BOJ] 10773 제로

SolB 2022. 6. 19. 21:57

class 2

class Stack:
    def __init__(self, size):
        self.top=-1
        self.stack=[]
        self.size=size

    def push(self,item):
        if self.top < (self.size-1):
            self.top += 1
            self.stack.append(item)
        else: return
        
    def pop(self):
        if self.top > -1:
            self.top -=1
            return self.stack.pop()
        else: return

n=int(input())
s=Stack(n)
sum=0
for i in range(n):
    num=int(input())
    s.push(num)
    sum+=num
    if num==0:
        s.pop()
        sum-=s.pop()
print(sum)

<코드 설명>

class Stack으로 스택을 구현하였다. 

- push : top이 self.size-1보다 작으면 top에 1을 더해주고, item을 추가해준다.

- pop : top이 -1보다 큰 경우, top을 하나 줄이고 pop을 해준다.

 

먼저 스택의 사이즈인 n을 입력받아주고, s에 Stack(n)을 저장해주었다. 그리고 구해야 할 값인 sum을 0으로 초기화 해주었다.

 

n번동안, num을 input 받고 s에 이를 push해주었다. 그리고 sum에 num을 더해주었다. 만약 num이 0이라면 0을 pop해준 후, 이전 값을 pop해주어 이를 sum에서 빼주었다.

 

그리고 이렇게 구한 sum을 출력해주었다.

 

<실행 결과>