본문 바로가기

Python/프로그래머스

[프로그래머스] [Python] 프린터

문제 풀이

 

def solution(priorities, location):
    answer = 0

    # enumerate를 사용하여 고유번호를 부여. 이후 찾고자 하는 location과 대응된다.
    priorities = [i for i in enumerate(priorities)]

    while True:
        # 맨 앞을 가져온다. 맨 앞이 가장 큰 값일 때는 그냥 빠지기만 한다.
        current_top = priorities.pop(0)

        # 현재 맨 앞의 값이 다른 값보다 작다면
        if any(current_top[1] < p[1] for p in priorities):
            # 다시 배열에 넣어주도록 하자
            priorities.append(current_top)

        # 해당 값이 가장 큰 값이라면
        else:
            # 맨 앞은 while문의 첫 줄에서 빠진 상태이다
            # 작업 완료 = 이후 작업들의 대기 시간 + 1 과 같으므로 대기 상태(answer)에 1을 추가한다.
            answer += 1
            # 그러다가 우리가 찾고자 하는 작업의 고유번호(location)이 나오면
            if current_top[0] == location:
                # answer를 리턴한다
                return answer

사용 함수 간략 소개

 

1. enumerate

arr = [1, 2, 3, 4, 5]

arr = [i for i in enumerate(arr)]

arr = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

 

이런 식으로 해당 배열의 인덱스를 포함시켜주는 함수이다.

 

2. any

- 인자로 받은 요소 중 하나라도 True이면 True 반환

- 전부 false이거나 인자가 비어있는 경우에만 false 반환

 


문제 링크

 

 

programmers.co.kr/learn/courses/30/lessons/42587?language=python3

 

코딩테스트 연습 - 프린터

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

programmers.co.kr