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 |