반응형
문제
https://www.acmicpc.net/problem/1021
원하는 숫자가 제일 앞으로 올때까지 회전횟수를 저장하고 원하는 숫자가 제일앞으로오
면 인자를 제거하는 방식이다.이때 회전횟수는 최소화 시켜야한다. 배열의 절반위치보다
뒤에있다면 오른쪽으로 회전시켜야하고 그렇지 않다면 왼쪽으로 회전시켜주면된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | from _collections import deque import sys mydeque=deque() N,M=map(int,sys.stdin.readline().split()) location=list(map(int,sys.stdin.readline().split())) for i in range(1,N+1): mydeque.append(i) count=0 location_len=N for i in range(M): index = -1#첫인자라면 0이 나올수 있도록 for j in range(len(mydeque)): index += 1 if mydeque[j]==location[i]: break if index>len(mydeque)//2:#절반보다 뒤에 있다면오른쪽회전 for k in range(len(mydeque)-index): mydeque.appendleft(mydeque.pop()) count+=1 else: for k in range(index):#절반보다 앞에 있다면 왼쪽회전 mydeque.append(mydeque.popleft()) count+=1 mydeque.popleft() print(count) | cs |
반응형
'알고리즘(python) > 자료구조' 카테고리의 다른 글
[Python]우선순위큐 백준 11279 (0) | 2020.02.01 |
---|---|
[Python]Deque 백준 5430 (0) | 2020.01.18 |
[Python]Deque 백준 10866 (0) | 2020.01.17 |
[Python]Queue 백준 1966 (0) | 2020.01.17 |
[Python]Queue 백준 11866 (0) | 2020.01.16 |
최근댓글