728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3
최종 코드
from collections import deque
def solution(priorities, location):
answer = 0
queue = deque([[p, i] for i, p in enumerate(priorities)])
while True:
cur = queue.popleft()
if len(queue) == 0: return answer+1
p_list = [p[0] for p in queue]
if cur[0] < max(p_list):
queue.append(cur)
else:
answer += 1
if location == cur[1]: return answer
풀이 과정
플이 시간 50분
priorities에 담겨있는 목록 순서대로 우선순위가 가장 높으면 인쇄를 하고, 아니면 다시 뒤로 보내야 하므로 queue를 사용하여 과정을 수행해 나가면 된다.
입력으로 주어진 priorities 상에서 location에 있는 항목이 몇 번째로 인쇄되는지를 return하는 문제이고, 우선 순위에 따라 항목의 순서가 바뀔 것이기에 처음에 몇 번째 항목이었는지를 표현하기 위해 queue에 [priority, index]로 각 항목을 담아 초기화 해준다.
그리고 아래 과정을 location이 인쇄될 때까지 반복적으로 수행한다.
1. priorities의 가장 앞에 있는 항목을 꺼내 cur에 담는다.
2. 나머지 priorities 중에서 cur의 priority보다 큰 항목이 있으면 queue에 cur을 push하고 1.로 돌아간다.
3. 나머지 priorities 중에서 cur의 priority가 가장 크다면 인쇄가 이뤄지므로 answer += 1을 하고 현재 인쇄되는 항목이 location인지 확인하여 location과 같으면 answer가 해당 location이 인쇄되는 순서이기 때문에 return한다. location의 항목이 아니라면 1로 돌아간다.
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 2 주식가격 Python3 (0) | 2021.07.05 |
---|---|
Level 2 다리를 지나는 트럭 Python3 (0) | 2021.07.05 |
Level 2 기능 개발 Python3 (0) | 2021.07.04 |
Level 3 단어 변환 Python3 (0) | 2021.07.01 |
Level 3 네트워크 Python3 (0) | 2021.07.01 |