반응형
이 문제는 deque을 사용하여 푸는 문제였다.
문제 풀이의 핵심은 주어진 input에 대해 역순으로 확인하며 deque에 카드번호를 집어넣는 것이다.
예를 들어 input이
5
2 2 1 3 2 1
이렇게 주어졌다면
1 → 2 → 3 → 1 → 2 → 2
순서로 값을 읽고, 각 숫자에 해당하는 과정을 해주면 된다.
카드 숫자는 1부터 N까지 수행을 할 때마다 1씩 증가한다.
1의 경우:
제일 앞에 카드가 들어가므로 deque.appendleft()를 사용해주었다.
2의 경우:
1. 앞에서 두 번째에 카드가 들어가야 하기 때문에 deque.popleft()를 이용하여 제일 앞의 카드를 빼네준다.
2. 카드를 deque.appendleft()를 이용해 넣는다.
3. 빼낸 카드를 deque.appendleft()를 이용해 다시 제일 앞에 넣어준다.
3의 경우:
deque.append()를 이용하여 제일 뒤에 넣어준다.
예시코드
import sys
from collections import deque
N = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
res = deque()
card_num = 1
for i in range(N):
if(data[N-1-i] == 1):
res.appendleft(card_num)
elif(data[N-1-i] == 2):
a = res.popleft()
res.appendleft(card_num)
res.appendleft(a)
else:
res.append(card_num)
card_num = card_num + 1
for i in res:
print(i, end=' ')
반응형
댓글