[백준/파이썬] 2346번

민정·2023년 9월 18일
0

[백준/파이썬]

목록 보기
174/245
post-thumbnail

📍백준 2346번 문제

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

코드

import sys
from collections import deque

input = sys.stdin.readline

n = int(input())

cmd = list(map(int, input().split()))
bal = deque([])
res = []
for a in range(n):
    bal.append([cmd[a], a+1])

for i in range(len(cmd)-1):
    val = bal.popleft()
    res.append(val[1])
    for _ in range(abs(val[0])-1):
        if val[0] > 0:
            temp = bal.popleft()
            bal.append(temp)
        else:
            temp = bal.pop()
            bal.appendleft(temp)
    if val[0] < 0:
        bal.appendleft(bal.pop())

res.append(bal[-1][1])

print(*res, end="")

풀이

큐를 이용해서 문제를 풀었다.
이중 배열을 이용해 [풍선 안에 들어있는 종이 값, 풍선의 위치] 를 저장한다.
만약 음수가 나오면 절대값을 이용해 반복문을 돌린다.
종이 값이 양수라면 맨 앞의 값을 빼고 (popleft), 뒤에 추가한다(append).
음수라면 맨 뒤의 값을 빼고(pop), 앞에 추가한다(appendleft).
종이 값이 음수인 경우엔 원하는 값이 맨 뒤에 있으므로 다시 한번 더 값을 빼고 앞에 추가하면 된다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글