프로그래머스/Lv.2
프로세스 - Python, deque, sorted
아찌방
2024. 11. 13. 12:37
https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 - 나의 생각
우선 순위가 높은 프로세스부터 시작되어야 하니까
주어진 프로세스의 우선 순위을 내림차순으로 정렬합니다.
그 다음 deque에 기존 프로세스들의 우선순위와 위치를 저장합니다.
문제에서 원하는 location에 있는 프로세스를 추적하기 위해서입니다.
방법은
from collections import deque
def solution(priorities, location):
dq = deque((process, idx) for idx, process in enumerate(priorities))
from collections import deque
def solution(priorities, location):
dq = deque()
for idx, process in enumerate(priorities):
dq.append([process, idx])
편한 걸로 하시면 됩니다.
그리고 deque를 순회하면서
조건에 맞는 프로세스를 찾으면 문제는 끝납니다.
코드
from collections import deque
def solution(priorities, location):
#우선순위 개수 세기
prioritiesCnt = sorted(priorities, reverse = True)
#우선순위와 위치 기록
dq = deque((process, idx) for idx, process in enumerate(priorities))
cnt = 0
while dq:
now = dq.popleft()
#우선순위 이면
if now[0] == prioritiesCnt[cnt]:
cnt+=1
#찾는 프로세스이면
if now[1] == location:
return cnt
else:
dq.append(now)
return -1
728x90