알고리즘/문제풀이

[Python] Programmers 프린터

정찡이 2021. 9. 28. 13:35
728x90

1. 문제 링크

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr


2. 문제 요약


3. 아이디어 정리

  1. 덱을 사용하여 앞에 있는 문서를 꺼낼 수 있도록 합니다.
  2. 가장 앞에 있는 것과 max 문서를 비교하여 더 중요한 문서가 있는 경우 맨 뒤로 보냅니다.
  3. 아닌 경우 내가 요청한 문서인지 확인합니다.

4. 문제 풀이

4-1. 내 풀이

import collections

def solution(priorities, location):
    answer = 0
    priorities = [(x, i) for i, x in enumerate(priorities)]   # 각 우선 순위의 인덱스와 원소를 튜플로 저장함
    priorities = collections.deque(priorities)                # 앞에서 제거해야함 > 덱 사용
    while priorities:
        priority = priorities.popleft()

        if priorities and max(priorities)[0] > priority[0]:   # 가장 큰 수 >  왼쪽 원소: 맨 뒤로 해당 원소를 보냄
            priorities.append(priority)
        else:                                  # location 동일한 경우, 그만
            answer += 1
            if location == priority[1]:
                break

    return answer

 


5. 결론

  • 덱 사용 문제