Algorithm/Programmers

[Python] 프린터

느낌표 공장장 2021. 4. 22. 00:16
def solution(priorities, location):
    answer = 0
    printer = [(i, j) for i, j in enumerate(priorities)] 
    
    while True :
        x = printer.pop(0)
        if any(x[1] < q[1] for q in printer) :
            printer.append(x)
        else :
            answer += 1
            if x[0] == location :
                return answer

1. 입력받은 priorities를 enumerate를 이용하여 인덱스와 우선순위를 튜플로 printer 리스트 에 넣어준다.

    ex) priorities = [1, 2, 3, 1] 이면 printer = [(0,1), (1, 2), (2, 3), (3, 1)] 이 됨

2. printer에서 첫번째 튜플을 x 변수에 입력 받고,

3. x[1]보다 printer에 있는 튜플의 첫번째 인덱스에 더 큰 값이 있다면 (any 함수 사용)

    ex) x=(0,1),  x[1] = 1 , for q in printer 로 q[1]만 본다면 -> 2, 3, 1이다. 

    append 함수를 사용하여 x 값을 맨 뒤로 보낸다. 

    ex) printer = [(0,1), (1, 2), (2, 3), (3, 1)] --->  printer = [(1, 2), (2, 3), (3, 1), (0,1)]

4. 만약 x[1] 보다 더 큰 값이 없을 경우(같거나 작은 값들만 있을 경우)

    answer에 1을 추가해준다. (우선순위가 1씩 늘어나는 것)

    (x값은 printer에서 사라지게 된다. 따라서 그 다음 우선순위들만 printer에 남게된다.)

     4-1) x[0]값이 location과 같다면 answer을 return 한다.

 

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 시저 암호  (0) 2021.04.26
[Python] 주식가격  (0) 2021.04.22
[Python] 다음 큰 숫자  (0) 2021.04.19
[Python] 124 나라의 숫자  (0) 2021.04.18
[Python] 자연수 뒤집어 배열로 만들기  (0) 2021.04.17