인쇄 우선순위와 내가 요청한 문서의 위치가 주어질 때, 우선순위 순서대로 출력했을 경우 내 문서가 몇번째로 인쇄되는지 반환하는 함수 작성
- 인쇄 방식
- 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
- 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
- 그렇지 않으면 J를 인쇄합니다.
def solution(priorities, location):
answer = 0
enum = [i for i in enumerate(priorities)]
while True:
if len(enum) > 1:
j = enum.pop(0)
jp = priorities.pop(0)
if j[1] < max(priorities):
enum.append(j)
priorities.append(jp)
else:
answer += 1
if j[0] == location:
break
else:
answer += 1
break
return answer
def solution(priorities, location):
priorities = [(v, idx) for idx, v in enumerate(priorities)]
count = 0
while True:
if priorities[0][0] == max(priorities)[0]:
count += 1
if priorities[0][1] == location:
break
priorities.pop(0)
else:
priorities.append(priorities.pop(0))
return count
location
을 활용하기 위해 주어진 배열 priorities
를 enumerate화while
Loop으로 아래와 같은 사이클 수행enum
과 priorities
에서 pop(0)
수행priorities
개체 중 가장 큰 수(max)와 enum.pop(0)
값 (index, priority)
중 priority
값을 비교하여, max 값이 더 클 경우 조건에 의해 목록 최 후순위로 append()
location
과 일치할 때 break
pop()
을 수행했을 때 properties
개체의 길이가 0이되므로 max 값이 존재하지 않아 런타임 오류 발생while
Loop 실행 최우선으로 길이를 비교하고, 주어진 properties
길이가 1일 경우 바로 인쇄를 수행하고 break
cf) 튜플에 max()
가 적용된다는 걸 생각을 못해서 좀 더 수월하게 풀 수 있는 방법을 놓쳤음.