백준1021(파이썬) - 회전하는 큐
resilient
·2021. 7. 9. 11:31
728x90
반응형
https://www.acmicpc.net/problem/1021
- 이 문제를 읽고 처음 든 생각은 '문제이름도 큐 니까 큐로 풀어야지' 라고 생각해서 리스트를 사용해서 풀었다.
- 먼저 q라는 리스트안에 1~n+1까지의 숫자를 넣어준다.
- for문을 만들어주고, m만 큼 반복해준다. 그 다음부터는 data[i]인덱스와 q리스트 전체 길이를 비교해서 조건문을 만들어주고, data[i] 인덱스가 q리스트 전체 길이 - data[i] 인덱스보다 작을경우, 비교하려는 숫자 data[i]가 q리스트 맨앞에 있으면 q[0]를 삭제해주고, 아니면 , q[0]에 있던 숫자를 리스트 끝에 넣어주고 q[0]을 삭제한다.
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
data = list(map(int,input().split()))
q = [i for i in range(1, n + 1)]
cnt = 0
for i in range(m):
q_len = len(q)
now_idx = q.index(data[i])
if now_idx < q_len - now_idx:
while 1:
if q[0] == data[i]:
del q[0]
break
else:
q.append(q[0])
del q[0]
cnt += 1
else:
while 1:
if q[0] == data[i]:
del q[0]
break
else:
q.insert(0, q[-1])
del q[-1]
cnt += 1
print(cnt)
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준10971(파이썬) - 외판원 순회2 (0) | 2021.07.11 |
---|---|
백준1495(파이썬) - 기타리스트 (2) | 2021.07.10 |
백준2133(파이썬) - 타일 채우기 (0) | 2021.07.08 |
백준11286(파이썬) - 절댓값 힙 (0) | 2021.07.07 |
백준11659(파이썬) - 구간 합 구하기 4,preifx-sum (0) | 2021.07.06 |