
가장 위에 있는 카드를 pop하고, push를 할 때에느 가장 아래에 있는 카드 밑으로 하기때문에 자료구조 queue가 이번 문제를 푸는 열쇠임을 알 수 있다.
하지만 나는 만약의 경우에 대비해 시간 복잡도면에서 보다 효율적인 deque를 불러와 문제를 풀었다.
deque은 push와 pop이 위, 아래 모든 곳에서 가능하다.
먼저, deque를 파이썬에서 이용하기 위해서는 이를 import해와야한다.
이때 주의할 점은,
deque는 collections에서 import 해야하며,
그냥 _import deque이 아닌, from collections import deque를 해야한다.
입력받은 수만큼 deque에 하나씩 저장해주고, 문제에서 주어진 과정을 반복한다.
1. 가장 위에 있는 카드를 pop()
2. 가장 위에 있는 카드를 pop()한 뒤, 맨 아래에 push()
이 과정에서 카드가 하나만 남게 된다면 이 과정을 break로 빠져나와 그 카드를 출력해주면 된다.
from collections import deque
que=deque()
num=int(input())
for i in range(num):
que.append(i+1)
while (1):
if(len(que)==1):
break
que.popleft()
if(len(que)==1):
break
x=que.popleft()
que.append(x)
print(que[0])
첫 시도때에는 카드가 하나(1)만 주어졌을때의 경우를 고려하지 않아서 런타임에러가 발생하였다.
이처럼 내가 작성한 코드에 있어서 예외 사항까지 더 신경써야겠다.