from collections import deque
queue = deque([])
n = int(input())
for i in range(1, n+1):
queue.append(i)
while True:
if len(queue) == 1:
break
queue.popleft()
queue.append(queue.popleft())
print(queue[0])
코드 설명
큐 사용을 위해 deque 를 import 한다.
반복문을 돌면서 큐에 카드를 넣어준다. (이때 순서는 가장 큰 숫자가 마지막에 들어옴)
큐에 카드가 한장만 남을 때 까지 반복문을 수행한다. 한장은 버리고 한장은 빼서 제일 아래로 옮기는 과정을 반복한다.
큐에 남은 카드를 출력한다.
Point: 두번의 연산을 연달아 수행한다. popleft() 수행, 한번 더 popleft() 수행 후 그 값을 다시 append() 하여 준다.
카드 개수가 한 개이면 반복문을 종료한다.
728x90
'SW개발 > 코딩테스트' 카테고리의 다른 글
[백준]1966번 프린터 큐 - 큐 (0) | 2021.01.18 |
---|---|
[백준]11866번 요세푸스 문제 0 - 큐 (0) | 2021.01.17 |
[백준]18258번 큐 2 - 큐 (0) | 2021.01.15 |
[백준]1874번 스택 수열 - 스택 (0) | 2021.01.14 |
[백준]4949번 균형잡힌 세상 - 스택 (0) | 2021.01.13 |