📌문제
https://programmers.co.kr/learn/courses/30/lessons/42587
🎖️난이도
Level 2
✔️풀이
# sol1 (내 location(인덱스)를 이동시키면서 반복하다가 맨앞 & max이면 return order)
def solution(priorities,location):
order = 0
while priorities:
if priorities[0] == max(priorities): # max() 써도 시간 초과 안남
order += 1
priorities.pop(0)
if location == 0:
return order
else:
location -= 1
else:
priorities.append(priorities.pop(0))
if location == 0:
location = len(priorities) - 1
else :
location -= 1
return order
# sol2
def solution(priorities, location):
pi_list = [(p, i) for i, p in enumerate(priorities)]
waiting_q = [] #최종 출력될 인쇄물들을 순서대로 집어넣을 큐
while pi_list:
pi = pi_list.pop(0)
priority = pi[0] #첫 번째 프린터의 우선순위 priority
p_list = [p for p, i in pi_list] #pi_list에서 priority만 뽑아와서 list를 만든다.
if p_list:
max_p = max(p_list)
if priority >= max_p:
waiting_q.append(pi)
else:
pi_list.append(pi)
for i, item in enumerate(waiting_q): #최종 완성된 waiting_q에서 location과 일치하는 index를 가진 아이템을 찾는다.
if item[1] == location:
return i + 1
'[ 알고리즘 ] > Stack, Queue' 카테고리의 다른 글
[프로그래머스/C++] 올바른 괄호 (0) | 2022.10.10 |
---|---|
[프로그래머스] 다리를 지나는 트럭 (0) | 2022.06.29 |
[프로그래머스] 기능개발 (0) | 2022.06.29 |