본문 바로가기
Java/알고리즘

[Java] 프로그래머스 [PCCP 기출문제] 1번 / 붕대 감기

by WaterPunch 2024. 9. 27.

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {
        int finalAttackTime = attacks[attacks.length-1][0];
        //1 ≤공격시간≤ 1,000
        int[] attackTimeArr = new int[1001];
        int currentHealth = health;

        for(int i=0; i<attacks.length; i++) {
            int attackTime = attacks[i][0];
            int damage = attacks[i][1];
            attackTimeArr[attackTime] = damage;
        }

        int successStack = 0;
        for(int i=1; i<=finalAttackTime; i++) {
        	// attack이 있었다면 체력 - 처리 후 continue, 만약 체력이 0 이하라면 break
            if(attackTimeArr[i] >= 1) {
                currentHealth -= attackTimeArr[i];
                successStack = 0;
                if(currentHealth <= 0) {
                    currentHealth = -1;
                    break;
                }
                continue;
            }
            // 현재 체력 == max 체력일때 처리
            if(currentHealth == health) {
                successStack = 0;
                continue;
            }

			// 회복 성공
            currentHealth += bandage[1];
            successStack++;
            // 연속회복 성공시
            if(successStack == bandage[0]) {
                currentHealth += bandage[2];
                successStack = 0;
            }
            // 회복완료 후 max체력이 넘지 않도록 처리
            if(currentHealth >= health) {
                currentHealth = health;
            }
        }

        return currentHealth;
    }
}
반응형

댓글