출처 https://programmers.co.kr/learn/courses/30/lessons/42587
- 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
- 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
- 그렇지 않으면 J를 인쇄합니다.
priorities가 pop(0) 되더라도 초기의 index인 location를 보관할 수 있는 방법에 대해 고민을 했다.
처음에는 list를 따로 만들어서 관리하려 했었는데 이 경우 priorities의 변화에 맞춰 location list도 같이 변경해줘야 한다는 번거로움이 있었다.
그래서 list(enumerate(priorities))를 통해 stack 리스트에 tuple 형식으로 (location:priority) 이렇게 넣어주었고 priorities은 원본으로 유지하고 stack을 변형하는 방식으로 코드를 작성하였다.
def solution(priorities, location):
answer = 0
stack = list(enumerate(priorities))
while stack:
for i in range(len(stack)):
if stack[i][1] == max(list(map(lambda x:x[1], stack))):
stack = stack[i:] + stack[:i]
answer += 1
if stack[0][0] == location:
return answer
stack.pop(0)
break
stack = list(enumerate(priorities))
for i in range(len(stack)):
if stack[i][1] == max(list(map(lambda x:x[1], stack))):
stack = stack[i:] + stack[:i]
answer += 1
if stack[0][0] == location:
return answer
stack.pop(0)
break