본문 바로가기
알고리즘/문제 풀이 (출처: 프로그래머스)

[JAVA] 디펜스 게임

by 이민우 2024. 2. 22.
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/142085

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

import java.util.PriorityQueue;
import java.util.Collections;

class Solution {
    public int solution(int n, int k, int[] enemy) {
        int answer = 0;
        
        // 막은 적들을 내림차순으로 저장
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        
        for(int e : enemy) {
            
            // 병사를 이용해 적을 막음
            n -= e;
            // 막은 적의 수를 저장 (내림차순으로 저장됨)
            pq.add(e);
            
            if(n < 0) {
                // 병사를 전부 소모했다면
                if(k > 0) {
                    // 무적권이 남았다면 지금까지 막은 적 중 가장 많은 수의 적을 무효화
                    int tmp = pq.poll();
                    n += tmp;
                    k--;
                }
                else {
                    // 없으면 끝난거
                    break;
                }
            }
            
            // 스테이지 클리어
            answer++;
            
        }
        
        return answer;
    }
}
728x90
반응형