곧죽어도 콛잉

[BOJ 1021 / Python] 회전하는 큐 본문

Coding Test/Python

[BOJ 1021 / Python] 회전하는 큐

코드진행형 2024. 2. 20. 18:44

https://www.acmicpc.net/problem/1021

 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

 

간단한 문제다. python의 deque에 존재하는 rotate 함수를 사용하면 끝! 

 

찾으려는 수가 해당 queue에서 어느 위치에 있는지 확인하고, 어느 방향으로 돌릴지만 결정하면 끝난다!

 

왼쪽은 +1, 오른쪽은 -1 로 표현해주면 된다.

import sys
from collections import deque
input=sys.stdin.readline

def solution(nums, total_size):
    ans = 0
    queue = deque([i+1 for i in range(total_size)])
    
    for i in nums:
        mid = len(queue) // 2
        while queue[0]!=i :
            if mid < queue.index(i) :
                queue.rotate(1)
                ans+=1
            elif mid >= queue.index(i) :
                queue.rotate(-1)
                ans+=1
        queue.popleft()
    
    return ans


total_size, n = map(int, input().split())
nums = list(map(int, input().split()))

print(solution(nums, total_size))

 

 

Comments