1import heapq
2
3def solution(n, k, enemy):
4 heap = []
5 cnt = 0
6 for i in enemy:
7 n -= i
8 heapq.heappush(heap, -i)
9 while n < 0:
10 k -= 1
11 if not heap or k < 0:
12 return cnt
13 tmp = -heapq.heappop(heap)
14 n += tmp
15 cnt += 1
16 return cnt
문제
- n: 가지고 있는 병사 수
- k: 사용할 수 있는 무적권 스킬 수
- enemy: 라운드마다 존재하는 적 수의 배열
- 라운드마다 enemy[i]명 만큼 소모하여 enemy[i]마리의 적을 막을 수 있다
- 무적권을 적절히 사용하여 버틸 수 있는 최대 라운드 수를 구하라
- TC
- input
n: 7, k: 3, enemy: [4, 2, 4, 5, 3, 3, 1]
- ouput
5
- input
해결방법
- enemy를 순회하면서 힙에 병사 수를 저장하면서, 가지고 있는 병사를 소모한다
- 가지고 있는 병사 수가 음수가 되면 가장 병사가 많은 라운드에서 무적권을 사용한다