rueki
프로그래머스 (LV2). 프린터 본문
728x90
반응형
생각보다 시간 초과때문에 골머리를 많이 앓은 문제...
왜 인덱스랑 우선순위 요소랑 바꾸기만 했다고 시간 초과가 안뜨는지 궁금한 부분인데
의심되는건 뒤에서 비교할 때 각 요소의 0, 1 인덱스 접근때문인거 같기도 하고..
- Queue에서 뽑아낸 첫 위치의 원소의 우선순위가 Queue에 남아있는 것들의 최대 우선순위보다 낮으면 일단 뒤로 보낸다.
- 최대 우선순위의 원소를 만나게 되면 이것이 첫 프린터 순서이기때문에 + 1 을 해주고 Queue에서 아예 제거
- 찾고자 하는 위치랑도 일치하면 멈추면 되고 아니면 이미 우선순위는 다른 것들보다 앞이기 때문에 제거
from collections import deque
def solution(priorities, location):
# (우선순위, idx)
q = deque([(p, i) for i, p in enumerate(priorities)])
answer = 0
while q:
current_v = q.popleft()
#맨 앞의 요소 우선순위가 가장 높은 우선순위보다 낮으면 뒤로 보냄
#queue에 존재하는 것들중 가장 높은 우선순위와 현재 원소 우선순위 비교
if q and current_v[0] < max(q)[0]:
q.append(current_v)
else:
#우선순위가 가장 큰 경우, 뒤에 같은 우선순위가 있을 수 있음
#해당 location이 아닌 경우에는 아예 제외시켜버림
answer += 1
if current_v[1] == location:
break
return answer
728x90
반응형
'프로그래머스 연습' 카테고리의 다른 글
프로그래머스 LV2. 짝지어 제거하기 (0) | 2022.10.06 |
---|---|
프로그래머스 Lv1. 모의고사(완전탐색) (0) | 2022.10.06 |
프로그래머스 LV2. 올바른 괄호(스택) (0) | 2022.10.06 |
프로그래머스(Lv2). 구명보트(Greedy) (0) | 2022.10.05 |
프로그래머스 . 문자열 내 p와 y의 개수(Lv1) (0) | 2022.10.05 |
Comments