알고리즘 고득점 Kit - 힙 - 이중우선순위큐

문제 풀이

1. 사실 이거 힙큐를 써야되나 싶어서 그냥 단순 리스트로 풀었습니다. 파이썬 내부의 sort함수가 nlogn이라는 시간복잡도를 가지기 때문에 그냥 정렬하면서 해도 상관 없어요. 파이썬 만세

(i가 들어갈때마다 정렬하면 터질 수 있는데 D가 나올 때 정렬을 하면 터질 이유가 없습니다. 예전에 삼성 B형 문제도 이거랑 비슷했는데 제가 정렬하는 타이밍을 넣을때마다 해서 떨어진 경험이 있습니다... 여러분은 이런거 주의하세요)

2. I 인 경우 i[1:]을 int형으로 바꿔서 리스트에 삽입

3. D 인 경우 -1인지 1인지 판별, 리스트를 정렬 후 최댓값/최솟값 삭제

def solution(operations):
    answer = []
    for i in operations:
        if i[0] == 'I':
            answer.append(int(i[1:]))
            answer.sort()
        elif i[0] == 'D':
            if not answer:
                continue
            elif i[2] == '1':
                answer.pop()
            else:
                answer.pop(0)

    if not answer:
        return [0, 0]
    else:
        return [answer[-1], answer[0]]
반응형