Rego의 블로그
백준 1966 파이썬 프린터 큐 본문
https://www.acmicpc.net/problem/1966
문제 이해하는 데 정말 오랜 시간을 소요했다... 결국 수많은 시행착오 끝에 구글의 힘을 빌어 해결했지만, 이해한 대로 적어보자면,
1. 중요도 리스트와 중요도 리스트의 길이를 요소로 하는 인덱스 리스트를 작성한다.
2. m은 찾고자 하는 문서의 리스트 내 위치로, 중요도 리스트의 길이를 요소로 한 index[]를 만들고 index[m] = 'x'를 이용해 리스트에 x를 심어놓는다.
3. while 문을 이용해 중요도 리스트의 첫 번째 요소가 리스트 내에서 큰 값일 때만 cnt를 늘리고, 첫 번째 요소가 가장 크지 않다면, pop() 하여 append()하는 것을 반복한다.
4. 3번 작업을 반복하다보면 imp[0]이 가장 큰 차례가 온다. 그 때 if 문 내부의 index[0]을 묻는 if 문을 실행하고
index[0] == 'x'를 만족하지 않는다면 imp[0]와 index[0]을 pop()하여 가장 큰 값을 없앤다.
5. if 문을 만족시켜 cnt를 출력하고 break를 실행하여 마친다.
t = int(input())
for i in range(t):
n, m = map(int, input().split())
imp = list(map(int, input().split()))
index = list(range(len(imp)))
index[m] = 'x'
cnt = 0
while True:
if imp[0] == max(imp):
cnt += 1
if index[0] == 'x':
print(cnt)
break
else:
imp.pop(0)
index.pop(0)
else:
imp.append(imp.pop(0))
index.append(index.pop(0))
'BEAKJOON' 카테고리의 다른 글
백준 10989 파이썬 수 정렬하기 3 (0) | 2021.09.30 |
---|---|
백준 1929 파이썬 소수 구하기 (0) | 2021.09.29 |
백준 11659 파이썬 구간 합 구하기 4 (0) | 2021.09.27 |
백준 5543 파이썬 상근날드 (0) | 2021.09.26 |
백준 9372 파이썬 상근이의 여행 (0) | 2021.09.25 |