python/알고리즘 문제풀이

[프로그래머스 | 파이썬3] 프린터- 큐활용

빛날희- 2021. 7. 5. 01:19

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

> 큐 활용

from collections import deque

def solution(priorities, location):
    loc=[x for x in range(len(priorities))]
    lst= deque(list(zip(priorities, loc)))
    answer= 0
    
    while True:
    	# 리스트의 튜플에서 첫번째 요소(priorities)의 max값 도출
        m= max(lst, key= lambda x: x[0])[0]
        
        # 리스트의 가장 첫번째 요소들을 꺼내서
        p,l= lst.popleft()
        
        # 꺼낸 요소 중 l이 답인 location과 같고 p가 max값과 같으면 반복문 탈출
        if l == location and p == m:
            answer += 1
            break
            
        # 꺼낸 요소 중 p가 max값보다 작으면 다시 해당 값들을 리스트의 끝에 추가
        if p < m:
            lst.append((p,l))
            
        # 꺼낸 요소 중 p가 max값보다 (크거나) 같으면 answer에 +1
        else:
            answer += 1
            
    return answer