[프로그래머스] 디펜스 게임

박형진·2023년 1월 5일
0

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


1. 코드

import heapq

def solution(n, k, enemy):
    answer = 0
    acc_enemy = 0
    h = []
    for e in enemy:
        heapq.heappush(h, -e)
        acc_enemy += e
        
        if acc_enemy > n:
            if k >= 1:
                acc_enemy += heapq.heappop(h)
                k -= 1
            else:
                break
        answer += 1

    return answer

2. 후기

1 ≤ enemy의 길이 ≤ 1,000,000 조건을 보고 O(logn) 시간복잡도가 소요되는 이진 탐색으로 접근했는데 어려웠다. 힙을 생각해보니 문제가 너무 쉽게 풀렸다.

profile
안녕하세요!

0개의 댓글