본문 바로가기
알고리즘

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

by 육빔 2024. 3. 19.
728x90
반응형

 

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

 

1021번: 회전하는 큐

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

www.acmicpc.net

deque을 얼마나 잘 활용할 수 있는지에 대한 문제

 

while문과 for문을 좀 난잡하게 쓴 것 같다.

마지막에 popleft를 안해서 시간을 좀 사용한 것 같다. 

 

그리고 index라는 좋은 함수가 있어서 내가 짠 중간부분 for문을 dq.index(i)로 변환하면 파이썬의 이점을 더 살릴 수 있을 것 같다.

 

코딩을 C언어로 시작해서.. 파이썬 함수를 아직도 잘 모른다.

from collections import deque
n, m = map(int, input().split())

dq = deque([])

for i in range(1, n+1):
    dq.append(i)

arr = list(map(int, input().split()))
cnt = 0
for i in range(m):
    if dq[0] == arr[i]: #같으면 pop
        dq.popleft()
        continue

    indexNum=0
    for j in range(len(dq)): #맞는 index 찾기
        if dq[j] == arr[i]:
            indexNum = j


    while dq[0] != arr[i]: #다르면 같을때까지
        if indexNum > len(dq)//2:
            cnt+=1
            dq.appendleft(dq.pop())
        else:
            cnt+=1
            dq.append(dq.popleft())
    dq.popleft()

print(cnt)

 

728x90
반응형