알고리즘

[백준, 파이썬, 1021번] 회전하는 큐

hminor 2023. 12. 19. 12:33

풀이

  • 뭔가 애를 먹었던 부분이 else의 if 문에서 인덱스와 dq.size()/2 부분에서
  • 정수 나누기 정수의 경우엔 정수로 되는 부분으로 한참 고생을 했다.
  • 마지막으로 문제에서 2번,3번 연산의 최솟값을 출력하라고 해서 
  • 둘 중 작은 값으로 출력해야하는 줄 알고도 조금 ... ㅎ

 

import sys
from collections import deque

input = sys.stdin.readline
cnt = 0
n,m = map(int,input().split())
dq = deque(range(1,n+1))

for i in list(map(int,input().split())):
    while True:
        if i == dq[0]:
            dq.popleft()
            break
        else:
            if dq.index(i) < len(dq)/2:
                while dq[0] != i:
                    cnt += 1
                    dq.rotate(-1)
            else:
                while dq[0] != i:
                    cnt += 1
                    dq.rotate(1)
print(cnt)