susinlee 님의 블로그
92. 프로세스 본문
[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/42587
[풀이]
1. 작업할 프로세스에 번호를 부여하고, 우선순위와 함께 묶어준다.
→ 왼쪽에서 데이터를 효율적으로 빼내기 위해 deque 자료구조 사용 (popleft 메소드 사용)
처리 순서를 나타내는 cnt 변수도 생성해준다.
2. 묶어준 자료(큐)에서 왼쪽에서 현재 처리할 프로세스를 pop 하고
큐에서 데이터들을 순회해서 우선순위를 비교한 후 하나라도 큰게 있다면 처리하는 문서를 append 한다.
(우선순위가 높을 프로세스를 먼저 처리해야 하므로)
3. 우선순위가 가장 높다면 찾고 있는 프로세스 번호와 비교한 후 같으면 처리 순서에 1을 더한 후 리턴하고
그렇지 않다면 처리순서에 1만 더한 후 다시 반복문을 진행한다.
from collections import deque
def solution(priorities, location):
q = deque([[idx,i] for idx, i in enumerate(priorities)])
cnt = 0
while q:
now = q.popleft()
if any(now[1] < queue[1] for queue in q): q.append(now)
else :
if now[0] == location : return cnt + 1
cnt += 1
return cnt + 1
'코드카타 > Python' 카테고리의 다른 글
91. 기능개발 (0) | 2025.01.16 |
---|---|
90. 의상 (0) | 2025.01.15 |
89. 할인 행사 (0) | 2025.01.14 |
88. 행렬의 곱셈 (0) | 2025.01.13 |
87. n^2 배열 자르기 (0) | 2025.01.12 |