우선순위 프린터(queue이용)

eunji lee·2022년 5월 17일
0

알고리즘

목록 보기
3/11

https://www.youtube.com/watch?v=ZMfuDnUfdAc
강의를 보면서 문제를 푸는 방법을 배울 수 있었다.

  • 알고리즘 문제 해석하는 법
  1. 문제를 읽는다
  2. 문제가 원하는 요지를 파악한다.
    -즉, 하나를 꺼내와서 내가 제일 중요하면 꺼내면 되는거고 아니면 맨 뒤에 넣어라
  3. 제한 조건을 확인한다
  4. 입출력 예시를 확인 한다
  5. 문제를 단순화 시킨다
    -큐에서 하나씩 꺼내서 수행할 수 있으면 하고 아니면 다시 넣는다
    -왜 큐인가? : 맨처음에 들어오는것이 맨처음에 실행되기때문에
  6. 솔루션 도출하기

enumerate

-열거하다는 뜻의 함수로, 여러가지 자료형(list, set, tuple)을 인덱스를 포함한 객체로 리턴한다.

기본적으로 인덱스와 원소로 이루어진 튜플(tuple)을 만들어 준다.

deque

from collections import deque


def solution(priorities,location):
        printer =deque((i, p) for i, p in enumerate(priorities))
        turn = 0

        while printer:
            job = printer.popleft() # 큐의 pop은 앞에서부터 꺼내옴
            if any(job[1] < other_job[1] for other_job in printer):
                printer.append(job)
            else:
                turn += 1  # 3. 내가 제일 중요하다면 수행하고 location과 비교한다.
                if job[0] == location:
                    break;
            return turn

print(solution([2,1,3,2],2))
profile
안녕하세요! 이은지 입니다.

0개의 댓글