백준 - 1021번: 회전하는 큐 - 파이썬

SEONGJIN LEE·2022년 3월 2일
0

code-test

목록 보기
2/18

백준 - 1021번: 회전하는 큐

문제

입출력 형식 및 출처

import sys


n, m = list(map(int, sys.stdin.readline().split()))
number_arr = list(map(int,sys.stdin.readline().split()))

circular_queue = list(range(1, n+1))
sum = 0

for number in number_arr:
    while True:
        if circular_queue.index(number) == 0:
            circular_queue.pop(0)
            break
        if abs(circular_queue.index(number) - 0) <= abs(circular_queue.index(number) - len(circular_queue)):
            # 절대값(거리의 차이) 를 비교 후 왼쪽으로 갈지 오른쪽으로 갈지 판단
            circular_queue.append(circular_queue.pop(0))
        else:
            circular_queue.insert(0, circular_queue.pop())
        sum += 1

print(sum)

큐를 이용하는 문제

  • 큐가 양방향으로 구현됨
  • 절대값을 통해 뽑으려하는 수의 index를 비교(거리비교) 후 움직일 방향 결정
profile
조금 늦어도 꾸준하게

0개의 댓글