[문제 링크] 👉 https://www.acmicpc.net/problem/2161
풀이
큐 생성 방법
from collections import deque
queue = deque()
- collections의 덱 라이브러리를 import 한다.
- deque() 를 선언하면 양방향 큐인 덱이 생성된다.
첫 번째 원소를 빼내는 방법
queue.popleft()
- popleft() 는 왼쪽의 첫 번째 원소를 큐에서 빼고 출력한다.
- pop() 은 오른쪽의 첫 번째 원소를 큐에서 빼고 출력한다.
제일 아래에 있는 카드를 밑으로 옮기는 방법
queue.rotate(-1)
- rotate() 는 큐를 왼쪽 혹은 오른쪽으로 회전시키는 함수이다.
- 인자로 얼만큼 이동시킬지 넘기면 되는데, 이때 그 수가 음수이면 왼쪽으로, 양수이면 오른쪽으로 회전한다.
★ rotate() 예시
from collections import deque
num = [1, 2, 3, 4, 5]
queue = deque(num)
1️⃣ 왼쪽으로 1만큼 회전
queue.rotate(-1)
print(*queue) # unpack
결과
2 3 4 5 1
- 왼쪽으로 1만큼 회전시킨 결과, 맨 앞에 있던 1이 맨 뒤로 이동한 걸 볼 수 있다.
2️⃣ 왼쪽으로 3만큼 회전
queue.rotate(-3)
print(*queue) # unpack
결과
4 5 1 2 3
- 왼쪽으로 3만큼 회전시킨 결과, 1, 2, 3 이 차례로 왼쪽으로 이동한 걸 볼 수 있다.
3️⃣ 오른쪽으로 1만큼 회전
queue.rotate(1)
print(*queue) # unpack
결과
5 1 2 3 4
- 오른쪽으로 1만큼 회전시킨 결과, 맨 뒤에 있던 5가 첫 번째로 이동했고 나머지 수들이 오른쪽으로 모두 이동한 걸 볼 수 있다.
Solution
from collections import deque
n = int(input())
card_deq = deque(range(1, n + 1)) # n 만큼 큐에 넣기
result = []
while card_deq:
result.append(card_deq.popleft())
card_deq.rotate(-1)
print(*result)
👩💻 회고
덱의 rotate() 를 이용해서 쉽게 풀 수 있었다.
'BOJ 코딩테스트 > Silver' 카테고리의 다른 글
[BOJ] 2002. 추월 (Python/구현/Silver 2) (1) | 2024.10.29 |
---|---|
[BOJ] 1021. 회전하는 큐 (Python/자료구조/Silver 3) (1) | 2024.10.29 |
BOJ 11723번 : 집합 (Python/구현/Silver 5) (0) | 2024.03.12 |
BOJ 9655번 : 돌 게임 (Python/구현, DP/Silver 5) (0) | 2024.03.10 |
BOJ 2164번 : 카드2 (Python/자료구조(큐)/Silver 4) (1) | 2024.01.30 |