문제 링크
풀이
import sys
class Document:
def __init__(self, importance):
self.importance = int(importance)
self.is_target = False
t = int(sys.stdin.readline())
answer = []
for _ in range(t):
n, m = map(int, sys.stdin.readline().split())
queue = list(map(Document, sys.stdin.readline().split()))
queue[m].is_target = True
count = 0
while True:
is_highest = True
for doc in queue:
if queue[0].importance < doc.importance:
queue = queue[1:] + [queue[0]]
is_highest = False
break
if is_highest:
printed = queue[0]
queue = queue[1:]
count += 1
if printed.is_target:
answer.append(str(count))
break
print("\n".join(answer))
먼저 중요도와 몇 번째로 인쇄되었는지 알고자 하는 대상인지 여부를 프로퍼티로 갖는 Document 객체를 정의하고, Document 객체들로 queue를 채운다. 그리고 인쇄 순서를 알고자 하는 단 하나의 문서의 is_target 프로퍼티를 True로 변경한다.
queue의 첫 번째 문서보다 중요도가 높은 문서가 뒤에 있다면, 첫 번째 문서를 맨 뒤로 보내고, 첫 번째 문서가 가장 중요도가 높은 문서라면 queue에서 제거한다. 이 때, 제거한 문서의 is_target이 True라면, count를 저장하고 반복을 종료한다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 3085] 사탕 게임 with Node.js (0) | 2021.05.04 |
---|---|
[백준 1049] 기타줄 with Node.js (2) | 2021.05.02 |
[백준 13305] 주유소 with Node.js (1) | 2021.05.01 |
[백준 15650] N과 M (2) with Python (0) | 2021.04.30 |
[백준 11652] 카드 with Node.js (0) | 2021.04.29 |