알고리즘/[Python] 백준

(Python) 백준 1021번 : 회전하는 큐

 

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

 

1021번: 회전하는 큐

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

www.acmicpc.net


 

(Python) 백준 1021번 회전하는 큐

(Python) 백준 1021번 : 회전하는 큐

  • 알고리즘 분류
    • 시뮬레이션

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


In [1]:
# N:큐의 크기  M:뽑아내려고 하는 수의 개수
N,M = map(int, input().split())
# M_array: 뽑으려고 하는 원소의 위치(가장 처음 큐에서의 위치)
M_array = list(map(lambda x:int(x)-1, input().split()))
10 3
2 9 5
In [2]:
cnt = 0
for _ in range(M):
    if M_array[0] < N-M_array[0]: ## 왼쪽으로 rotate
        cnt = cnt + M_array[0]
        M_array = list(map(lambda x:(x-M_array[0])%N-1, M_array))
        del M_array[0]
        N = N-1
    else: ## 오른쪽으로 rotate
        cnt = cnt + (N - M_array[0])
        M_array = list(map(lambda x:(x+N-M_array[0])%N-1, M_array))
        del M_array[0]
        N = N-1
In [3]:
print(cnt)
8