Algorithm/Stack & Queue

[Python] 프로그래머스 프로세스

코딩쪼앙 2024. 7. 17. 11:30

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

  • 프로세스 담은 큐 생성
    • 편의를 위해 프로세스를 알파벳으로 처리하지 않고 그냥 숫자로 처리했다.
  • 우선순위 배열 큐로 변환
  • 수행되지 않은 프로세스가 남아있을 때 까지 프로세스와 우선순위 pop
  • pop했다면 남은 우선순위를 모두 돌면서 더 높은 순위가 있다면 다시 삽입
  • 우선순위를 끝까지 돌았으나 더 높은 순위가 없다면 result에 넣기
  • 모든 프로세스가 끝났다면 resut에서 location이 있는 인덱스 찾아서 반환 후 1 더하기
    • 프로세스를 0부터 넣었는데 순서는 1부터 시작하므로 1 더해주면 됨

코드

from collections import deque
def solution(priorities, location):
    answer = 0
    result = []
    # process 큐 생성
    process = deque()
    for i in range(len(priorities)):
        process.append(i)
    # priorities 큐로 만들기
    priorities = deque(priorities)
    while process:
        pc = process.popleft()
        p = priorities.popleft()
        for i in range(len(priorities)):
            if p < priorities[i]:
                process.append(pc)
                priorities.append(p)
                break
        else:
            result.append(pc)
    return result.index(location) + 1

설명에 나와있는대로 큐를 사용해서 구현하면 되는 간단한 문제