본문 바로가기

두두의 알고리즘/문제

[큐] 프로그래머스 L2 '프린터' (Python)

728x90

<문제 링크>

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr


<문제 풀이>

  1. priorities값과 해당 값의 배열 위치를 q에 저장
  2. 문제에서 제시한 방법대로 알고리즘을 구현

<코드>

#1차 시도. 2,5,18 실패.
def solution(priorities, location):
    q = []
    count = 0
    for idx, i in enumerate(priorities):
        q.append((idx,i))
    while q:
        tmp = q.pop(0)
        if tmp[1] < max(q ,key=lambda x:x[1])[1]:
            q.append(tmp)
        else:
            count += 1
            if tmp[0] == location:
                break
    return count

 

#while 문에서 만약 q에서 꺼낸 원소가 마지막이었을 경우를 고려

def solution(priorities, location):
    q = []
    count = 0
    for idx, i in enumerate(priorities):
        q.append((idx,i))
    while q:
        tmp = q.pop(0)
        if q==[]:
            count += 1
            break
        if tmp[1] < max(q ,key=lambda x:x[1])[1]:
            q.append(tmp)
        else:
            count += 1
            if tmp[0] == location:
                break
    return count

 

<고쳐야 할 점>

  • 다양한 테스트 케이스 생각해보기