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을 출력해주었다.

 

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1427 소트인사이드  (0) 2022.06.19
[BOJ] 2869 달팽이는 올라가고 싶다  (0) 2022.06.19
[BOJ] 1251 단어 나누기  (0) 2022.05.28
[BOJ] 4949 균형잡힌 세상  (0) 2022.05.28
[BOJ] 9012 괄호  (0) 2022.05.28

+ Recent posts