알고리즘/프로그래머스
[프로그래머스/python] 디펜스 게임
하루아아한잔
2023. 3. 14. 17:49
[문제 풀이]
- enemy 배열을 앞에서 탐색하며 무적권을 먼저 사용하는 방법을 활용했습니다.
- 하지만 사용했다해서 끝이 아니라 값을 비교하면서 무적권 안에 현재 마주한 적 수보다 작은 라운드에 무적권이 사용되었다면 현재 라운드에 무적권을 사용한 것으로 갱신해주었습니다.
[풀이 코드]
import heapq
def solution(n, k, enemy):
answer = 0
invinc = [0] * k # 무적권
for i in range(len(enemy)):
# invinc[0] 랑 비교하면서 invinc 대체
if enemy[i] > invinc[0]:
n -= heapq.heapreplace(invinc, enemy[i])
else:
n -= enemy[i]
if n < 0:
return i
return len(enemy) # 만약 배열이 다 돌고 나서도 여기로 나온다면 n > 0 이라는 뜻으로 무조건 clear