반응형
알겠습니다. 백준 온라인 저지의 "회전하는 큐" 문제(1021번)를 자세히 살펴보겠습니다. 🙂
문제 개요
- 문제 번호: 1021번
- 문제 제목: 회전하는 큐
- 문제 내용: 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있습니다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 합니다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있습니다:
- 첫 번째 원소를 뽑아낸다.
- 왼쪽으로 한 칸 이동시킨다.
- 오른쪽으로 한 칸 이동시킨다.
입력
- 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ N)
- 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 순서대로 주어진다. (1 ≤ 위치 ≤ N)
출력
- 지민이가 M개의 수를 뽑아내는데 드는 최소 이동 횟수를 출력한다.
문제 해결 방법
- 큐를 구현하기 위해 deque 모듈을 사용합니다.
- 각 숫자의 위치를 큐에 저장합니다.
- 뽑아내려는 숫자의 위치와 큐의 첫 번째 원소의 위치를 비교하여 최소 이동 횟수를 계산합니다.
- 계산된 이동 횟수를 누적하여 최종 결과를 출력합니다.
from collections import deque
N, M = map(int, input().split())
target_nums = list(map(int, input().split()))
queue = deque(range(1, N+1))
result = 0
for num in target_nums:
left_count = queue.index(num)
right_count = len(queue) - left_count
if left_count < right_count:
queue.rotate(-left_count)
else:
queue.rotate(right_count)
queue.popleft()
result += left_count
print(result)
#출력
1 2 3 4 5
4 1 2 3 5
14
반응형
'프로그래밍 _공부자료. > 백준넷' 카테고리의 다른 글
백준넷 6번 문제 python 파이썬 문제 풀이 (0) | 2024.06.21 |
---|---|
백준넷 5번 문제 with python (0) | 2024.06.20 |
백준넷 4번 문제 (2) | 2024.06.19 |
백준넷 3번 문제 합 Pyhton 코드 (0) | 2024.06.19 |
백준넷 2번 문제 A+B (0) | 2024.06.19 |
댓글