프로그래머스/Level 2

스택/큐 - 프린터

bright_code 2020. 10. 13. 15:26
728x90
반응형
from collections import deque 


def solution(priorities, location):
    
    queue = deque()
    for i in range( len(priorities) ):
        queue.append( [ priorities[i], i ] )
        
    answer = [] 
        
    while queue: 
        n = queue.popleft() 
        
        for q in queue: 
            if n[0] < q[0] :
                queue.append(n)
                n = []
                break 
        
        if n : 
            answer.append( n[1] )
            
    return answer.index(location) +1 

 

location은 index와 동일하다. 

 

step 1 ) queue 자료 구조를 사용하기 위해서 deque 정의 

step 2 ) 맨 처음 대기목록에서의 순서를 사용해서 return 값에 적용할 것이므로 우선순위와 location 을 리스트로 묶어 deque에 저장

step 3 ) 문제에 주어진 대로 구현, 나보다 우선순위가 높은 값이 뒤에 있으면 빼서 큐 맨 뒤로 보내고

             없으면 answer 배열에 넣음 

step 4 ) 처음에 입력받은 location 이 answer 의 어느 위치에 있는지 출력한다. 단, 출력 순위는 1 부터 시작하므로 +1 해준다. 

728x90
반응형