
문제
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net

결과

풀이
import collections
n, m = map(int, input().split())
l = list(map(int, input().split()))
q = collections.deque(list(range(1, n+1)))
answer = 0
for i in l:
while True:
if q[0] == i:
q.popleft()
break
elif q.index(i) <= len(q)//2:
while q[0] != i:
q.append(q.popleft())
answer += 1
else:
while q[0] != i:
q.insert(0, q.pop())
answer += 1
print(answer)
덱을 써서 푸는 문제이다. 남아있는 deque의 length와 추출하고자 하는 숫자의 index를 비교하여 deque를 왼쪽으로 이동할지 오른쪽으로 이동할지 정하고 이를 반복한다.
'알고리즘 > 구현' 카테고리의 다른 글
| [프로그래머스][js] 주차 요금 계산 (0) | 2024.07.06 |
|---|---|
| [백준][js] 20436_ZOAC 3 (0) | 2024.06.23 |
| [백준][python] 1745 방 번호 (0) | 2022.02.19 |
| [백준][python] 1316 그룹 단어 체커 (0) | 2022.02.19 |
| [백준][python] 4673 셀프 넘버 (0) | 2022.02.17 |