코테 탈출일지

[백준] 10773번: 제로 - 파이썬/python 본문

구현

[백준] 10773번: 제로 - 파이썬/python

히려이 2023. 6. 26. 14:30

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

접근 방식

- 스택(stack)과 push, pop 개념 구현 방법

 

코드 풀이

from collections import deque
n = int(input())
deq = deque()

for _ in range(n):
    x = int(input())
    if x == 0: # 0을 부르면
        deq.pop() # 가장 최근 숫자 삭제
    else:
        deq.append(x)
        
print(sum(deq))

 

데트(deque)는 양방향 큐(queue)로써 스택(stack)의 구현까지 동시에 가능하기 때문에 코딩테스트에서 범용적으로 활용할 수 있습니다. 따라서 deque를 활용해 재현이가 부르는 숫자를 순서대로 append해줍니다. 이 때 0을 부르게 되면 가장 최근에 append한 맨 오른쪽의 숫자를 삭제합니다.

 

참고

deque.pop() # 맨 오른쪽 원소 가져와 삭제
deque.popleft() # 맨 왼쪽 원소 가져와 삭제
deque.remove(item) # item을 찾아 삭제
deque.append(item) # item을 오른쪽에 추가
deque.appendleft(item) # item을 왼쪽에 추가