프로그래머스 이중우선순위큐 코드 및 해설 (파이썬)

2021. 6. 1. 15:38algorithm

반응형

https://programmers.co.kr/learn/courses/30/lessons/42628

 

코딩테스트 연습 - 이중우선순위큐

 

programmers.co.kr

 

operate 함수를 통해 각 명령어를 식별하고, 삽입의 경우 리스트 맨 뒤에 숫자를 삽입, 최댓값 및 최솟값은 maxmin 함수를 사용하고 remove를 통해 삭제했습니다.
(지금 생각해보니 만약에 최댓값이나 최솟값이 2개 이상이면 어떻게 해야 하는지 문제에 설명을 안 했네요?! 그냥 하나만 삭제하는 걸까요)
for 문을 통해 각 명령어를 차례로 이행해주고, 큐가 비어있는 경우 [0,0]을, 아닌 경우 maxmin 함수를 이용해 [최댓값, 최솟값]을 반환했습니다.

 

def operate(q, operation):
    # 삽입 
    if operation.startswith('I'):
        num = int(operation.split()[-1])
        q += [num]
    # 최댓값 삭제
    elif operation == 'D 1':
        if q:
            q.remove(max(q))
    
    # 최솟값 삭제
    else:
        if q:
            q.remove(min(q))
    
    return q

def solution(operations):
    q = []
    for operation in operations:
        q = operate(q, operation)
    
    # 큐가 비어있는 경우 
    if not q:
        return [0,0]
    
    return [max(q), min(q)]
반응형