🔗 문제 링크
https://www.acmicpc.net/problem/1021
문제
지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다.
지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다.
- 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다.
- 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다.
- 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다.
큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그 원소를 주어진 순서대로 뽑아내는데 드는 2번, 3번 연산의 최솟값을 출력하는 프로그램을 작성하시오.
💻 나의 코드
from collections import deque
n, m = map(int, input().split())
arr = list(map(int, input().split()))
dq = deque(list(range(1, n+1)))
answer = 0
t = 0
while (t < m):
if dq[0] == arr[t]:
dq.popleft()
t += 1
else:
if dq.index(arr[t]) <= len(dq) // 2:
dq.rotate(-1)
else:
dq.rotate(1)
answer += 1
print(answer)
'PS > 백준' 카테고리의 다른 글
| [백준] (22860) 폴더 정리 (small) [Python] (0) | 2025.09.11 |
|---|---|
| [백준] (10814) 나이순 정렬 [Python][Java] (0) | 2025.09.09 |
| [백준] (17081) RPG Extreme [Python] (0) | 2025.08.11 |
| [백준] (2583) 영역 구하기 [Python] (0) | 2025.05.18 |
| [백준] (2042) 구간 합 구하기 [Python] (0) | 2025.04.08 |