본문 바로가기

Programming/Python

[프로그래머스] 스택/큐 - 프린터 (Python3, 파이썬)

문제

내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return해줘야 한다.

주어지는 입력은 priorities(문서의 중요도가 순서대로 담긴 배열)와 location(내가 인쇄를 요청한 문서가 어떤 위치에 있는지 알려주는 정수 변수)

주의할 점은 현재 인쇄할 문서보다 중요도가 더 높은 문서가 뒤에 있는 경우 현재 인쇄할 문서는 맨 뒤로 보낸다.

 

코드

def solution(priorities, location):
    queue =  [(i,v) for i,v in enumerate(priorities)]
    answer = 0
    while True:
        tmp = queue.pop(0)
        if any(tmp[1] < q[1] for q in queue):
            queue.append(tmp)
        else:
            answer += 1
            if tmp[0] == location:
                return answer

튜플로 queue에 인덱스와 우선순위를 저장한다.

무한루프 while문 안의 tmp변수에 queue의 처음 값을 pop해서 넣어준다.

if문으로 any를 사용해 큐 안의 값 중 tmp[1]보다 큰 게 있다면 append로 추가해준다.

아닐 경우 answer을 1증가시켜주고 tmp의 0번째 값과 location을 비교한다. 같으면 answer을 return해준다.

 

참고 링크 : https://velog.io/@chaegil15/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%8A%A4%ED%83%9D%ED%81%90-%ED%94%84%EB%A6%B0%ED%84%B0