https://www.acmicpc.net/problem/1021
#Solution
이 문제는 큐지만 사실 덱으로 풀어야하는 것이나 다름 없다. 라이브러리는 collections의 deque를 사용한다.
index모듈을 사용해서 위치를 확인 후 queue 전체 크기보다 작은지 큰지를 결정한 후 왼쪽/오른쪽 로테이션 방향을 정한다.
rotation을 얼마나 하느냐를 출력해주면 된다.
import collections
max_num, target_num = map(int, input().split())
target_list = list(map(int, input().split()))
que = collections.deque([i for i in range(1, max_num +1)])
result = 0
for num in target_list:
if num == que[0]:
que.popleft()
continue
left_move = que.index(num)
right_move = len(que) - left_move
if left_move <= right_move:
que.rotate(-left_move)
que.popleft()
result += left_move
else:
que.rotate(right_move)
que.popleft()
result += right_move
print(result)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#96 백준 파이썬 [1793] 타일링 (0) | 2019.09.19 |
---|---|
#95 백준 파이썬 [11726] 2xn 타일링 (0) | 2019.09.19 |
#93 백준 파이썬 [2164] 카드2 - 덱 (0) | 2019.09.18 |
#92 백준 파이썬 [4949] 균형잡힌 세상 (0) | 2019.09.17 |
#91 백준 파이썬 [10773] 제로 (0) | 2019.09.17 |