[백준] 회전하는 큐

 

문제

class Node():
    def __init__(self, value, next_node = None, prev_node = None):
        self.value = value
        self.next_node = next_node
        self.prev_node = prev_node

n, m = map(int, input().split())

head = Node(1)
tail = Node(n)
cur = head

for i in range(2, n):
    new_node = Node(i)
    cur.next_node = new_node
    new_node.prev_node = cur
    cur = new_node
cur.next_node = tail
tail.prev_node = cur
head.prev_node = tail
tail.next_node = head

want = list(map(int, input().split()))
cnts = []
for wanted in want:
    cnt = 0
    tmp = head
    left_dist = 0
    while tmp.value != wanted:
        tmp = tmp.next_node
        left_dist += 1

    tmp = head
    right_dist = 0
    while tmp.value != wanted:
        tmp = tmp.prev_node
        right_dist += 1

    if left_dist <= right_dist:
        for _ in range(left_dist):
            head = head.next_node
            tail = tail.next_node
            cnt += 1
    else:
        for _ in range(right_dist):
            head = head.prev_node
            tail = tail.prev_node
            cnt += 1

    head = head.next_node
    head.prev_node = tail
    tail.next_node = head
    cnts.append(cnt)
print(sum(cnts))