Data Structure/Queue

[프로그래머스 Lv.2] 프로세스

킹우현 2023. 9. 21. 15:58

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(priorities, location):
    answer = 0
    
    queue = [(i,value) for i,value in enumerate(priorities)]
    
    while queue:
        index, priority = queue.pop(0)
        
        if queue and max([x[1] for x in queue]) > priority:
            queue.append((index,priority))
            continue
        
        answer += 1
        
        if index == location:
            return answer
        
    return answer

이번 문제는 프로세스와 프로세스의 우선순위로 이루어진 Queue가 있을 때, 큐에서 꺼낸 원소보다 우선순위가 더 높은 프로세스가 있다면 다시 큐에 삽입하고 없다면 그대로 프로세스를 실행하여 종료시키는 문제이다.

 

Queue 자료형과 리스트 컴프리헨션 및 enumerate를 사용하여 간단하게 풀이할 수 있었다 :)