나중에 생각해보니 간단하게 구현만 하면되는 문제였다.
문제에 그대로 나와는걸 그대로 구현해보자
- 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
- 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
- 그렇지 않으면 J를 인쇄합니다.
프린트 기록을 담을 목록도 만든다.
데이터와 인덱스를 동시에 기록하는 리스트로 바꾼다.
print_list=[]
idx_list = [(i,p) for i,p in enumerate(priorities)]
while len(idx_list) > 0:
curr=idx_list.pop(0)
isBig=False
for w in idx_list:
if w[1] > curr[1]:
idx_list.append(curr)
isBig=True
break
if not isBig:
print_list.append(curr)
이것을 다 합치면 다음과 같다.
while len(idx_list) > 0:
curr=idx_list.pop(0)
isBig=False
for w in idx_list:
if w[1] > curr[1]:
idx_list.append(curr)
isBig=True
break
if not isBig:
print_list.append(curr)
이제 인덱스를 찾아서 값을 리턴해주면 끝난다.
이렇게 쉬운데 파이썬 문법에서 헷갈렸다. pop을 할 때 pop(0)를 해야
맨 앞의 문서를 빼가는데 pop()을 해버리는 바람에 시간이 오래 걸렸다.
아직 파이썬 문법은 익숙하지 않으니 1~2레벨의 기본 문제들을 더 풀어봐야지