𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨/ᴀʟɢᴏʀɪᴛʜᴍ

[Python] 프로그래머스 - 프로세스 [스택/큐]

콜라맛갈비 2024. 9. 6. 17:52
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

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

programmers.co.kr

 

from collections import deque

def solution(priorities, location):
    answer = 0
    
    dq = deque() #prio
    dq_idx = deque() #prio 인덱스
    
    num = [0] * 101
    
    for i in priorities :
        dq.append(i)
    
    for i in range(len(priorities)) :
        dq_idx.append(i)
        
    idx = 1
    
    while dq :
        cur = dq.popleft()
        cur_idx = dq_idx.popleft()
        
        if len(dq) == 0 :
            num[cur_idx] = idx
            continue
            
        if cur >= max(dq) : 
            num[cur_idx] = idx
            idx += 1
        else :
            dq.append(cur)
            dq_idx.append(cur_idx)
    
    return num[location]

처음 코드!

 

 

 

수정 코드!

from collections import deque

def solution(priorities, location):
    dq = deque(enumerate(priorities))
    max_priority = max(priorities)
    answer = 0
    
    while dq:
        cur_idx, cur_pri = dq.popleft()
        if cur_pri == max_priority:
            answer += 1
            if cur_idx == location:
                return answer
            if dq:
                max_priority = max(pri for _, pri in dq)
        else:
            dq.append((cur_idx, cur_pri))
    
    return answer

 

 

 

 

 

1. dq = deque(enumerate(priorities)) 로 간단히 사용

2. 꺼낼 땐, cur_idx, cur_pri = dq.popleft() 로 두개 써주기

3. max값 구할때도, max(pri for _, pri in dq) 

 

728x90