문제
https://www.acmicpc.net/problem/1966
걸린 시간
02 : 04 : 17
풀이
Python3
class Node:
def __init__(self, item, flag):
self.item = item
self.flag = flag
self.link = None
class Queue:
def __init__(self):
self.front = None
self.rear = None
self.search = None
def empty(self):
self.front = None
self.rear = None
self.search = None
def is_empty(self):
return self.front == None
def enqueue(self, item, flag):
temp = Node(item, flag)
if self.is_empty():
self.front = temp
self.rear = temp
else:
self.rear.link = temp
self.rear = temp
def dequeue(self):
temp = self.front
if self.is_empty():
print("error")
else:
item = temp.item
flag = temp.flag
self.front = temp.link
if self.front == None:
self.rear = None
return item
def _front_(self):
if self.is_empty():
print("error")
else:
return self.front.item
def is_mark(self):
if self.is_empty():
print("error")
else:
return self.front.flag
def is_high(self, data):
if self.is_empty():
print("error")
else:
self.search = self.front
while self.search.link != None:
# 맨 앞의 데이터가 뒤의 것들보다 우선순위가 낮다면
self.search = self.search.link
if data < self.search.item:
return True
return False
if __name__ == "__main__":
# test case
T = int(input())
# 큐 선언
q = Queue()
# 결과 저장
result = []
for j in range(0, T):
# 출력 횟수
count = 0
# 문서의 수, 몇 번째로 인쇄되었는지 궁금한 문서 위치
N, M = map(int, input().split())
# N개 문서의 중요도를 입력받음
docu = list(map(int, input().split()))
for i in range(0, N):
# 궁금한 문서 위치를 큐에 삽입할 경우
if i == M:
q.enqueue(docu[i], True)
else:
q.enqueue(docu[i], False)
# 큐가 비어있을 때 까지 반복하되
while not q.is_empty():
if q.is_high(q._front_()) == True:
flag = q.is_mark()
q.enqueue(q.dequeue(), flag)
else:
count += 1
# 궁금한 문서가 나오면 break
if q.is_mark() == True:
q.dequeue()
break
else:
q.dequeue()
q.empty()
result.append(count)
for i in result:
print(i)
입력을 받아오는 부분의 괄호 하나를 닫지 않아 발생한 SyntaxError 때문에 시간을 한참 보냈다. 오타가 발생한 지점을 정확히 알려주지 않고 자꾸만 다른 멀쩡한 구문에서 문제가 있다고 경고한다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 4949번 균형잡힌 세상 (0) | 2020.07.21 |
---|---|
Baekjoon 11866번 요세푸스 문제 0 (0) | 2020.07.21 |
Baekjoon 1874번 스택 수열 (0) | 2020.07.20 |
Baekjoon 1002번 터렛 (0) | 2020.07.20 |
Baekjoon 10848번 큐 (0) | 2020.07.19 |
댓글