회전하는 큐(1021)
https://www.acmicpc.net/problem/1021
import sys
from collections import deque
n, m = map(int, sys.stdin.readline().split())
array = map(int, sys.stdin.readline().split())
queue = deque([])
cnt = 0 # 몇번만에 되는지를 담을 변수
for num in range(n):
queue.append(num + 1) # 1부터 n까지 queue 배열에 담는다
for x in array: # 내가 뽑고싶은 수배열의 요소를 다 돌기
i = queue.index(x) # 그 수가 queue 배열에서의 몇번째 인덱스인지
if i == 0: # 0번째 인덱스라면(제일 앞에 있다면)
queue.popleft() # 바로 뽑아버린다.
else: # 0번째 인덱스가 아니라면
if i < (len(queue) - i): # 왼쪽으로 돌지, 오른쪽으로 돌지 계산한다.
cnt += i
queue.rotate(-i)
queue.popleft()
else:
cnt += (len(queue) - i)
queue.rotate(len(queue) - i)
queue.popleft()
print(cnt)
Author And Source
이 문제에 관하여(회전하는 큐(1021)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@andyjo/회전하는-큐1021저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)