본문 바로가기

Baekjoon

[Baekjoon]백준 2164 카드 2(실버 4) - Python

문제설명
예제

문제를 살펴보면 맨앞의 카드는 삭제하고 맨앞과 맨뒤의 카드를 서로 바꾸어 가는 과정을 반복하는 것을 알 수 있다

일단 문제를 해결하기 위해 카드의 번호가 저장된 큐를 구현해야한다

이전 문제에서 풀었던 from collectinos import deque를 통해 card를 선언해준다

이후에 for문을 통해 1부터 n까지 순서대로 append 함수로 값을 저장해주고

while문을 이용하여 길이가 1이 될 때까지 제일 위의 카드는 버리고

제일 위에 있는 카드를 제일 아래로 옮기는 과정을 반복한다 

card의 길이가 1이 되면 while문을 빠져나오게 되므로 card의 원소를 출력해주면 끝이다

from collections import deque

n = int(input())
card = deque()

for i in range(1, n + 1):
    card.append(i)
    
while len(card) != 1:
    card.popleft()
    s = card.popleft()
    card.append(s)

print(*card)