https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
백준 1021 '회전하는 큐' 문제입니다.
deque 모듈을 사용하였고, rotate를 이용하여 2,3번을 구현하였습니다.
인덱스 위치가 그 배열의 길이의 반보다 작으면 2번연산을 수행하고 그 외에는 3번 연산을 수행하였습니다.
import sys
from collections import deque
M, N = map(int, input().split())
poppop = list(map(int, input().split()))
numbers = []
for i in range(M):
numbers.append(i+1)
numbers = deque(numbers)
cnt = 0
for num in poppop:
a = numbers.index(num)
if a < (len(numbers) / 2):
numbers.rotate(-a)
cnt += a
else:
numbers.rotate(len(numbers)-a)
cnt += (len(numbers)-a)
numbers.popleft()
print(cnt)
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 2075번 : N번째 큰 수 (0) | 2022.02.24 |
---|---|
파이썬) 백준 알고리즘 | 1003번 : 피보나치 함수 (0) | 2022.02.18 |
파이썬) 백준 알고리즘 | 11866번 : 요세푸스 문제 0 (0) | 2022.02.06 |
파이썬) 백준 알고리즘 | 9012번 : 괄호 (0) | 2022.02.06 |
파이썬) 백준 알고리즘 | 10773번 : 제로 (0) | 2022.02.06 |
댓글