본문 바로가기
백준 알고리즘

파이썬) 백준 알고리즘 | 1021번 : 회전하는 큐

by 코딩새내기_ 2022. 2. 6.

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

 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

백준 1021 '회전하는 큐' 문제입니다.

deque 모듈을 사용하였고, rotate를 이용하여 2,3번을 구현하였습니다.

인덱스 위치가 그 배열의 길이의 반보다 작으면 2번연산을 수행하고 그 외에는 3번 연산을 수행하였습니다.

import sys
from collections import deque

M, N = map(int, input().split())
poppop = list(map(int, input().split()))
numbers = []
for i in range(M):
    numbers.append(i+1)
numbers = deque(numbers)
cnt = 0
for num in poppop:
    a = numbers.index(num)
    if a < (len(numbers) / 2):
        numbers.rotate(-a)
        cnt += a
    else:
        numbers.rotate(len(numbers)-a)
        cnt += (len(numbers)-a)
    numbers.popleft()
print(cnt)

댓글