프로그래머스 1단계

프로그래머스 [붕대 감기]

dev-lee 2026. 3. 1. 20:46

이번 문제는 구현만 할 수 있으면 간단하게 풀 수 있는 문제였다.

평소 게임을 좋아했기 때문에 게임처럼 체력이 깎이고 회복하는 기능을 구현하는 것이 재밌었다.

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {
        
        // 해당 변수의 값까지 카운트가 되면 추가 회복
        int healTime = bandage[0];
        // 연속 회복시간
        int successHeal = 0;
        // 초당 회복량
        int heal = bandage[1];
        // 추가 회복량
        int bonusHeal = bandage[2];
        // 몬스터의 매 공격을 따라가는 커서가 될 변수
        int attack = 0;
        // 최대체력
        int maxHealth = health;
        
        // 몬스터의 마지막 공격시간까지 반복문 돌림.
        for(int i = 1; i <= attacks[attacks.length-1][0]; i++) {
            // 공격을 받았을 시
            if(attacks[attack][0] == i) {
                health -= attacks[attack][1];
                // 다음 공격으로 넘어가고
                attack++;
                // 연속회복 초기화
                successHeal = 0;
                // 체력이 0이 되어 죽으면 -1 리턴
                if(health <= 0) {
                    return -1;
                }
            // 공격을 받지 않았을 시
            } else {
                // 연속회복 카운트하고 초당회복 진행
                successHeal++;
                health+=heal;
                // 연속회복이 기준치를 달성하면 추가회복 후 연속회복 초기화
                if(successHeal == healTime) {
                    health+=bonusHeal;
                    successHeal = 0;
                }
                // 최대체력 이상 회복 불가능
                if(health > maxHealth) {
                    health = maxHealth;
                }
            }
        }
        return health;
    }
}