Lv.1 : [PCCP 기출문제] 1번 / 붕대 감기

2025. 1. 20. 22:56Algorithm/프로그래머스

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/250137

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 풀이

function solution(bandage, health, attacks) {
    let [시전시간, 초당회복량, 추가회복량] = bandage;
    let 체력 = health;
    let 연속성공 = 0;
    let attackIdx = 0;

    for(let i = 1; i <= attacks[attacks.length - 1][0]; i++){
        let [공격시간, 피해량] = attacks[attackIdx];
        
        if(공격시간 != i){
            체력 = Math.min(health, 체력 + 초당회복량)
            연속성공++;
            if(연속성공 === 시전시간){
                연속성공 = 0;
                체력 = Math.min(health, 체력 + 추가회복량);
            }
        }else {
            체력 -= 피해량;
            연속성공 = 0;
            attackIdx++;
        }
        
        if(체력 <= 0) return -1;
    }
    
    return 체력;
}

 

시간은 제일 마지막 공격의 공격시간까지 흐르기 때문에, 1부터 attacks[attacks.length - 1][0]까지 for문을 돌린다.

 

현재 시간이 공격시간과 다르다면

체력을 계산해주고 연속 성공 + 1. 시전시간만큼 연속성공한다면 체력+추가회복량

체력을 계산할때는 최대 체력인 health를 넘지 않도록 한다.

 

현재 시간이 공격시간과 같다면

피해량만큼 체력 감소. 연속성공을 초기화시키고 attackIdx를 증가시켜 다음 공격을 살펴보도록 한다.

 

만약, 중간에 체력이 0이하가되면 -1 리턴

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

Lv.1 : 과일장수 [JavaScript]  (0) 2024.11.10
Lv.2 : 튜플 [JavaScript]  (0) 2024.11.10
Lv.1 : 모의고사 [JavaScript]  (1) 2024.11.07
Lv.2 : 의상 [JavaScript]  (0) 2024.11.06
Lv.2 : 프로세스 [JavaScript]  (0) 2024.11.03