최대 힙을 이용해서 만약 n이 0보다 작은 경우가 발생하면, 이전 라운드들 중 적의 수가 가장 큰 라운드에 대해서 무적권을 써주는 방식으로 풀어주었다
이전 라운드에 무적권을 써줄 때는, 해당 라운드의 적의 수만큼 n을 증가시켜주고, k를 1 감소시켜주는 부분만 신경 써주면 된다 (어차피 무적권은 적의 수와 관계 없이 사용되기 때문)
import heapq
def solution(n, k, enemy):
heap = []
for i in range(len(enemy)):
n -= enemy[i]
heapq.heappush(heap, -enemy[i])
if n < 0:
if k <= 0:
i -= 1
break
else:
n += (-1) * heapq.heappop(heap)
k -= 1
return i+1