https://www.acmicpc.net/problem/2346
2346번: 풍선 터뜨리기
첫째 줄에 자연수 N(1≤N≤1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 편의상 0은 적혀있지 않다고 가정하자.
www.acmicpc.net
원형 큐를 양방향 큐인 deque 즉, double-ended-queue로 생각하여 풀었다.
양수인 경우에는 popleft()를 하고 그걸 다시 append() 하고
음수인 경우에는 pop()을 하고 그걸 다시 appendleft() 하였다.
import sys
from collections import deque
N = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
q = []
for i in range(1,N+1):
q.append(i)
q = deque(q)
cur = q.popleft()
print(cur, end=" ")
while (q):
m = 0
if (num[cur-1]>0):
m+=1
while(m < num[cur-1]):
m+=1
q.append(q.popleft())
cur = q.popleft()
print(cur, end=" ")
elif (num[cur-1]<0):
m-=1
while (m > num[cur-1]):
m-=1
q.appendleft(q.pop())
cur = q.pop()
print(cur, end=" ")
'알고리즘💻 > 스택&큐&덱' 카테고리의 다른 글
BOJ 3078번: 좋은 친구 (0) | 2021.07.22 |
---|---|
BOJ 2304번: 창고 다각형 (0) | 2021.07.22 |
BOJ 4889번: 안정적인 문자열 (0) | 2021.04.06 |
BOJ 17299번: 오등큰수 (0) | 2021.02.01 |
BOJ 2504번: 괄호의 값 (0) | 2021.02.01 |