알고리즘

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

Bruno-Jang 2025. 1. 3. 23:49

우선순위가 가장 높은 것의 인덱스를 먼저 찾는 것까지는 바로 했으나

그 후 우선순위가 같은 것들이 남았을 때 어떻게 접근할지를 풀지 못 했습니다.

 

1. 우선순위와 인덱싱 매칭 (큐처럼 활용)

2. 큐의 가장 앞에 있는 값 꺼내서 나머지 값들의 우선순위와 비교

3. 꺼낸 값의 우선순위가 가장 크면 answer += 1

4. 아니라면 꺼낸 값을 다시 큐에 넣고 동일한 작업 반복

 

def solution(priorities, location):
	answer = 0
    
    queue = [(i, v) for i, v in enumerate(priorities)]
    
    while queue:
    	cur = queue.pop(0)
        if any(cur[1] < q[1] for q in queue):
        	queue.append(cur)
        
        else:
        	answer += 1
            if cur[0] == location:
            	return answer
        
        return answer