본문 바로가기
프로그래머스/Lv.2

프로세스 - Python, deque, sorted

by 아찌방 2024. 11. 13.

 

 

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