⭐️
import heapq
def solution(n, k, enemy):
    answer = 0
    tot, cnt, defense = 0, 0, k
    heap = []
    
    for en in enemy:
        tot += en
        heapq.heappush(heap, -en)
        
        # 적 숫자보다 적을 경우
        if n < tot:
            # 무적권 사용
            if defense:
                if heap:
                    # 최대힙 이용해 최댓값 삭제 가능
                    el = -heapq.heappop(heap)
                    tot -= el
                defense -= 1
            # 무적권 사용 불가
            else:
                break
        cnt += 1
    
    # 최소, 최대 무적권 개수와 enemy 길이 고려
    return min(max(cnt, k), len(enemy))
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges