개발 연습장/백준 문제풀이

[파이썬, Python] 백준 2161: 카드1

LooanCheong 2023. 5. 4. 11:07
반응형

문제

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

 

2161번: 카드1

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

코드

from collections import deque

num = deque(i + 1 for i in range(int(input())))
ans = list()

while len(num) > 1:
    ans.append(num.popleft())
    num.append(num.popleft())

ans.append(num[0])

for i in ans:
    print(i, end=' ')

설명

큐 구조를 사용해서 쉽게 해결할 수 있는 문제다.

우선 숫자 리스트를 큐로 생성해 주자.
그리고 정답을 담을 리스트도 하나 생성한다.

num의 개수가 2개 이상일 때,
ans에 num의 제일 처음에 있는 수를 추가하고,
그 다음 앞에 있는 수를 다시 뒤쪽으로 추가해 준다.

반복을 마치고 num에 남아있는 수 하나를 ans에 추가해 준다.

ans에 있는 수를 출력 형식에 맞추어 출력해 준다.

반응형