https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
풀이방법: 뽑아내려고 하는 숫자를 차례로 꺼내서 큐의 첫번째 원소가 될때까지 왼쪽이나 오른쪽으로 이동시킨다. 이때 data.index(num) <= len(data)//2를 만족하면 왼쪽으로 이동시키고 반대의 경우 오른쪽으로 이동시켜야 이동횟수를 최소화 시킬 수 있다.
from collections import deque
n,m = map(int,input().split())
# deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 이런식으로 큐를 표현한다.
data = deque([i for i in range(1,n+1)])
#뽑아내려고 하는 수의 위치가 index변수에 순서대로 담아있다.
index = list(map(int,input().split()))
count = 0
for num in index:
while 1:
if data[0] == num:
data.popleft()
break
else:
if data.index(num) <= len(data)//2:
data.rotate(-1)
count += 1
else:
data.rotate(1)
count += 1
print(count)
'알고리즘' 카테고리의 다른 글
백준20061 : 모노미노도미노2(Python) (0) | 2021.03.11 |
---|---|
백준 1158번 : 요세푸스 문제 (Python) (0) | 2021.02.03 |
백준 17135번 : 캐슬 디펜스 (Python) (0) | 2021.01.25 |
백준 2573번 : 빙산 (python) (0) | 2021.01.20 |
백준 1012번 : 유기농 배추(python) (0) | 2021.01.05 |