https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
우선순위 priorities와 몇번째로 실행해야 하는지 알아야 하는 프로세스의 위치 location이 주어질 때,
location에 해당하는 프로세스의 실행 순서를 구하는 문제입니다.
항상 우선순위가 가장 높은 작업을 먼저 수행해야 하므로 priorities는 내림차순으로 정렬해줍니다.
작업을 (인덱스, 우선순위) 형태로 모두 큐에 담아주고, 하나씩 빼보면서 작업의 우선순위를 비교하여 가장 높은 우선순위에 해당하면 처리해줍니다.
이 때, 현재 작업의 인덱스가 location에 해당할 경우 현재 작업의 순위를 리턴해주면 됩니다.
deque
from collections import deque
def solution(priorities, location):
answer = 0
# q = [[idx, v] for idx, v in enumerate(priorities)]
q = deque([[idx, v] for idx, v in enumerate(priorities)])
priorities.sort(reverse=True)
idx = 0
while len(q) > 0:
v = q.popleft()
# 현재 작업의 우선순위가, 가장 먼저 해야할 작업인지 확인
if v[1] == priorities[idx]:
idx += 1
# location과 같은지 확인
if v[0] == location:
return idx
# 아니라면 다시 넣어야 함
else:
q.append(v)
list
def solution(priorities, location):
answer = 0
q = [[idx, v] for idx, v in enumerate(priorities)]
# q = deque([[idx, v] for idx, v in enumerate(priorities)])
priorities.sort(reverse=True)
idx = 0
while len(q) > 0:
v = q.pop(0)
# 현재 작업의 우선순위가, 가장 먼저 해야할 작업인지 확인
if v[1] == priorities[idx]:
idx += 1
# location과 같은지 확인
if v[0] == location:
return idx
# 아니라면 다시 넣어야 함
else:
q.append(v)
'프로그래머스 > Lv.2' 카테고리의 다른 글
[Python] 프로그래머스 주식가격 (0) | 2024.08.11 |
---|---|
[Python] 프로그래머스 다리를 지나는 트럭 (0) | 2024.08.11 |
[Python] 프로그래머스 올바른 괄호 (0) | 2024.08.07 |
[Python] 프로그래머스 기능 개발 (0) | 2024.08.05 |
[Python] 프로그래머스 전화번호 목록 (0) | 2024.07.21 |