프로그래머스-디펜스 게임

S_H_H·2023년 6월 16일
0

프로그래머스

목록 보기
14/15

프로그래머스 로고

프로그래머스 - 디펜스 게임


문제 설명

문제 풀이

풀이 설명

찬스를 사용할 경우 현재 가지고 있는 병사를 그대로 유지할 수 있음으로
디펜스 중 적의 인원이 최대일 때 사용하는 것이, 병사를 유지할 수 있는 최대 방법이다

남은 병사가 적보다 작을때 까지 싸우고
작을 경우 찬스를 사용해 이전에 싸웠던 적의 최대 인원 수 많음 복원한다.

코드 작성

        public int solution(int n, int k, int[] enemy) {
            Queue<Integer> biggestEnemy = new PriorityQueue<>(Collections.reverseOrder());
            int answer = 0;

            int lastSoldier = n;
            int chance = k;

            for (int i = 0; i < enemy.length; i++) {
                biggestEnemy.add(enemy[i]);
                lastSoldier -= enemy[i];

                if(lastSoldier < 0){
                    while(chance > 0 && lastSoldier < 0){
                        Integer poll = biggestEnemy.poll();
                        lastSoldier += poll;
                        chance--;
                    }

                    if(lastSoldier < 0) break;
                }

                answer = i+1;
            }

            return answer;
        }
profile
LEVEL UP

0개의 댓글