나의 개발일지

[프로그래머스] Lv.2 디펜스 게임 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 디펜스 게임 [Python, 파이썬]

YoonJuHan 2024. 7. 25. 14:35
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/142085
  • 🔑 우선순위 큐 (hqepq)
    • 먼저 무적권 횟수만큼 라운드를 클리어하고 큐에 적 정보를 저장한다. (heappush)
    • 무적권을 다 사용했으면 클리어 한 라운드 중 가장 적이 적었던 라운드를 무적권이 아닌 병사로 처리한다. (heappop)
      • 병사로 처리했으므로 무적권을 다시 사용할 수 있음
    • 위 방법으로 무적권을 효율적으로 사용해서 라운드를 최대한 클리어할 수 있다.

 

from heapq import heappush, heappop

def solution(n, k, enemy):
    answer = 0
    hq = []
    
    for i in range(len(enemy)):
        heappush(hq, enemy[i])
        
        if len(hq) <= k:    # 일단 무적권 모두 사용
            answer += 1
            continue
        
        # 다 사용했으면 무적권을 사용한 라운드 중 가장 적이 적은 라운드를 병사로 처리
        n -= heappop(hq)    
        
        if n < 0: break     # 처리 못하면 종료
        
        answer += 1         # 처리할 수 있으면 라운드 클리어
    
    return answer
Comments