개발/알고리즘

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

송디 2024. 5. 1. 10:33

출처 : 프로그래머스

해결 방법

health 감소에 영향을 주는 상황은 attacks이 있을 때 발생한다. 그러므로 health가 감소하는 상황을 이용해 health를 구한다. 최대 체력이 정해져 있기 때문에, 체력 감소 + 붕대로 체력 회복 패턴을 반복한다. 연속 성공 했을 때, 추가 회복량을 주는 것만 중간에 조건을 끼워서 계산하면 비교적 쉽게 해결할 수 있다. 

 

코드 

function solution(bandage, health, attacks) {
    var answer = 0;
    let max_health = health;
    health = health - attacks[0][1];
    for(let i = 1; i < attacks.length; i++){
        let duration = attacks[i][0] - attacks[i-1][0] - 1;
        let extraPoint = 0;
        if(duration >= bandage[1]) extraPoint = Math.floor(duration / bandage[0])* bandage[2];
        health += ((duration * bandage[1]) + extraPoint)
        if(health > max_health) health = max_health;
        health -= attacks[i][1];
        if(health < 1) {answer = -1; break;}
        else answer = health;
    }
    return answer;
}
728x90