스택 - 프로세스

송다은·2024년 10월 10일
def solution(priorities, location):
    queue = [(i,p) for i,p in enumerate(priorities)]
    #(i,p) = (0,2),(1,1),(2,3),(3,2)
    answer = 0 #몇 번째 출력인지 넣을 것
    while True:
        cur = queue.pop(0) #비교할 거 꺼내둠
        if any(cur[1] < q[1] for q in queue):
            queue.append(cur) #큰게 있으면 꺼내둔거 다시 추가
        else : #큰게 없다면 꺼내둔 것이 우선순위가 가장 높음
            answer +=1 # 몇번째에 출력된 것인지 count
            if cur[0] == location : # 찾는 위치의 원소라면 
                return answer

keypoint

  • 우선순위와 원래의 인덱스를 저장해두고
    우선순위끼리 비교 후, 가장 높은 값이라면 처리했다고 가정 (answer+=1) 한뒤 처리한 인덱스가 location에 해당하면 return하고 종료.

  • 튜플로 (인덱스, 우선순위) 저장하여 접근할 때 cur[0]은 인덱스, cur[1]은 우선순위이다.

    • 리스트 queue[0] = (0,2)
    • 튜플 cur[1] = 2
    • queue[0][1] = cur[1] 이라는 뜻이다!
      => 튜플과 리스트를 잘 구분하자
profile
Anomaly Detection, AI Security, Multimodal

0개의 댓글