알고리즘 (Python)
[프로그래머스/python] Lv.2 프로세스
개발자 쿠키
2024. 8. 7. 14:02
Lv.2 프로세스
from collections import deque
def solution(priorities, location):
# 우선순위와 인덱스를 함께 저장
deq = deque([(priority, idx) for idx, priority in enumerate(priorities)])
cnt = 0
while deq:
current = deq.popleft()
if any(current[0] < item[0] for item in deq):
deq.append(current)
else:
cnt += 1
if current[1] == location:
return cnt
모르는 함수
enumerate()
순서가 있는 자료형 (list, set, tuple, dictionary, string)을 입력으로 받았을 때, 인덱스와 값을 포함하여 리턴
인덱스와 값을 동시에 접근하면서 루프를 돌리고 싶을 때 사용
enumerate(순서가 있는 객체, start=0)
frutis = [’orange’, ‘apple’, ‘pear’, ‘banana’, ‘kiwi’]
print(fruits)
# ['orange', 'apple', 'pear', 'banana', 'kiwi']
print(list(enumerrate(fruits)))
# [(0, 'orange'), (1, 'apple'), (2, 'pear'), (3, 'banana), (4, 'kiwi')
any()
하나라도 true인데 있으면 true
all()
모두 ture여야만 true
풀이
- 덱의 첫 번째 프로세스를 꺼낸다.
- 남아있는 프로세스 중에서 현재 프로세스 보다 우선순위가 높은 프로세스가 있는지 체크
- 현재 프로세스보다 우선순위가 높다면, 현재 프로세스를 다시 큐의 끝으로 보냄
- 그렇지 않으면 cnt += 1
- 실행된 프로세스가 우리가 찾는 프로세스면 cnt를 리턴