https://www.acmicpc.net/problem/1021
시계방향, 반시계 방향으로 회전하는 함수를 만들고 찾으려는 숫자까지 더 짧은 거리로 회전한 방향을 선택한다.
from collections import deque
n,m = map(int,input().split())
q = [x for x in range(1,n+1)]
nums = list(map(int,input().split()))
q = deque(q)
def clockwise(n):
cnt = 0
global q
while q[0] != n:
q.rotate(1)
cnt +=1
q.popleft()
return cnt
def counterclock(n):
cnt = 0
global q2
while q2[0] != n:
q2.rotate(-1)
cnt +=1
q2.popleft()
return cnt
q2 = q.copy()
answer = 0
for n in nums:
answer += min(clockwise(n), counterclock(n))
print(answer)
회전하기 전 미리 현재 위치와 뽑으려는 숫자의 인덱스의 위치를 파악하고 더 짧은 거리로 회전하여 더하는 방식
n,m = map(int,input().split())
q = list(range(1,n+1))
front = 0
ans = 0
for k in map(int,input().split()):
i = q.index(k)
ans += min(c:=abs(i-front),len(q)-c)
q.pop(i)
if q: front = i%len(q)
print(ans)