위에 해설을 잘 적어주셔서 참고하여서 문제를 이해하고 풀었습니다.
dp의 요소를 찾을때 while을 또 사용할 필요 없는거 같아서 지웠습니다.
import collections
import sys
n, m = map(int, sys.stdin.readline().split())
find = list(map(int, sys.stdin.readline().split()))
dp = collections.deque([i for i in range(1, n + 1)])
# 이동횟수
count = 0
# 찾는 원소 반복
for i in find:
# 찾을때까지 반복
while True:
# 찾는 원소가 0번째면 멈춘다.
if dp[0] == i:
dp.popleft()
break
# 아닐경우 진행
else:
# 중간값보다 작으면
# 찾는 원소를 왼쪽부터 찾음
if dp.index(i) < len(dp)/2:
# 맨앞을 맨뒤로 보냄 순환
dp.append(dp.popleft())
count += 1
# 오른쪽부터 찾음
else:
# 맨뒤를 맨앞으로 보냄 순환
dp.appendleft(dp.pop())
count += 1
print(count)
'개발 > 알고리즘' 카테고리의 다른 글
백준 1874번 스택 수열 (0) | 2024.01.22 |
---|---|
백준 11279번 최대 힙 (0) | 2024.01.17 |
백준 4949번 균형잡힌 세상 (1) | 2024.01.15 |
백준 9012번 괄호 (0) | 2024.01.10 |
백준 1011번 Fly me to the Alpha Centauri (1) | 2024.01.05 |