백준 1021 회전하는 큐 Python

Derhon·2023년 11월 16일
0
post-thumbnail

백준 1021 회전하는 큐

나의 답

import sys
from collections import deque

input = sys.stdin.readline

n, m = list(map(int, input().split()))
idx = list(map(int, input().split()))
nums = deque([i + 1 for i in range(n)])
res = 0

for i in idx:
    while True:
        if nums[0] == i:
            nums.popleft()
            break
        if nums.index(i) <= len(nums) // 2:
            nums.rotate(-1)
            res += 1
        else:
            nums.rotate(1)
            res += 1

print(res)

처음에 문제 이해를 잘못했다.
지우는 것도 포함인줄알았는데, 알고보니 뽑는건 진짜 최종! 딱 맞을때만 뽑는거고, 나머지 경우에는 rotate 밖에 못한다는 것을 알았다.

그러고 range 영역을 지정해서 반복문을 돌렸는데, 진짜 원인 모를 에러가 자꾸 발생했다.
검색해보니 다들 이 문제에서는 range가 아니라 목표 인덱스를 담은 배열로 포문을 돌리길래 그렇게 수정했더니 됐다..

둘의 차이가 뭐였는지 모르겠지만 일단 문제 자체와는 크게 연관이 없우니 우선 패스...!
얘도 내일 복습할때 다시 풀어봐야겠다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글