[백준] 1021번: 회전하는 큐

박정훈·2022년 2월 5일
0

코테 문제 모음

목록 보기
9/34

백준 1021번


N, M = map(int, input().split())
pos = list(map(int, input().split()))

arr = [i for i in range(1, N + 1)] # N이 10이라면 1 ~ 10 까지 배열
count = 0

for i in pos:
    idx = arr.index(i)
    if len(arr) // 2 >= idx: # 오른쪽으로 가는건 한번을 더 보내야 0번 인덱스로 빼야 할 숫자가 간다.
        while 1:            # 따라서 왼쪽으로 가는걸 >= 로 해줘야 한다.
            if arr[0] == i:
                arr.pop(0)
                break
            else:
                arr.append(arr.pop(0))
                count += 1
    else:
        while 1:
            if arr[0] == i:
                arr.pop(0)
                break
            else:
                arr.insert(0,arr.pop(-1))
                count += 1
print(count)

😢 조건문에서 >= 를 안줘서 헤맸다. 프린트를 찍어 보고서야 아! 오른쪽으로 회전하는건 한번 더 가야 0번 인덱스로 가고 0번에서 빼겠구나! 하고 깨달았다. 양쪽에서 빠질 수 있다고 문제를 잘못 이해하고 있었다. 예제를 보면서도 이게 왜 이렇게 되는거지.. 하고 있었는데 역시나..

profile
그냥 개인적으로 공부한 글들에 불과

0개의 댓글