디펜스 게임

Lee1231234·2023년 4월 25일

코딩테스트

목록 보기
43/95

문제 설명
준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사 n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다.
준호가 처음 가지고 있는 병사의 수 n, 사용 가능한 무적권의 횟수 k, 매 라운드마다 공격해오는 적의 수가 순서대로 담긴 정수 배열 enemy가 매개변수로 주어집니다. 준호가 몇 라운드까지 막을 수 있는지 return 하도록 solution 함수를 완성해주세요.

큐를 사용할줄 안다면 그 이후는 구현만 잘하면 된다
1.배열을 순서대로 받아서 total에 집어넣는다.
2. 만약 total의 값이 병사의 수(n)보다 크다면 무적권을 사용한다.
3. 무적권도 사용할수없고 total의 값이 n보다 크다면 배열순회를 중지한다.
코드

import java.util.*;
class Solution {
    public int solution(int n, int k, int[] enemy) {
        PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
        int answer = 0;
        int total=0;
        for(int e:enemy){
            total+=e;
            queue.add(e);
            if(k>0&&total>n){               
                total-=queue.poll();;
                k--;                               
            }
            if(k==0&&total>n) break;
            answer++;
           
        }
        
        return answer;
    }
}
profile
not null

0개의 댓글