BOJ(백준) 1021번 회전하는 큐 파이썬
2021. 3. 19. 14:56ㆍ개인 공부 공간/Algorithm
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
코드
import sys
r = sys.stdin.readline
N,M = map(int,r().split())
l = list(map(int,r().split()))
que = list(range(1,N+1))
cnt = 0
for i in l:
if que[0] == i:
que.pop(0)
else:
k = que.index(i)
if k <= len(que)//2:
cnt += k
else:
cnt += len(que) - k
que = que[(k+1):] + que[:(k+1)]
que.pop()
print(cnt)
해설
문제에서 주어진 2번 연산과 3번 연산이 실제로 몇번 이루어지는가를 확인하기 위해 리스트 que
[1,2,3, ,,, ,N]를 생성하였다. 그 후 index
를 이용해 첫 번째 칸으로 이동하기 위해 2번 연산과 3번 연산 중 어떤 연산이 더 효율적인지 확인 후 그 횟수만큼 cnt
를 더해주었다. 그리고 나서 이와 맞게 que
리스트를 슬라이싱을 이용해 내부 순서를 바꿔 주었다.
결과
'개인 공부 공간 > Algorithm' 카테고리의 다른 글
BOJ(백준) 1260번 DFS와 BFS 파이썬 (0) | 2021.03.19 |
---|---|
BOJ(백준) 5430번 AC 파이썬 (0) | 2021.03.19 |
BOJ(백준) 1966번 프린터큐 파이썬 (0) | 2021.03.19 |
BOJ(백준) 1874번 스택 수열 파이썬 (0) | 2021.03.19 |
BOJ(백준) 9012번 괄호 파이썬 (0) | 2021.03.19 |