function solution(bandage, health, attacks) {
const [maxTime,HPS,bonusHeal] = bandage
let maxHP = health
let time = 0
let successCount = 0
for(let i=1;i<1001;i++){
time +=1
// 공격이 해당 시간에 들어오면 체력 - , 성공 카운트 초기화, 해당 공격 처리 후 제거
if(time===attacks[0][0]){
successCount = 0
health -= attacks[0][1]
attacks = attacks.filter((d,index)=>index!==0)
if(health<=0){
return -1
}
if(attacks.length===0){
return health
}
}else{
// 공격이 들어오지 않았으면 초당 회복량만큼 회복 후 성공 카운트 증가,
successCount +=1
health += HPS
if(successCount===maxTime){
health += bonusHeal
successCount = 0
}
if(health>maxHP){
health = maxHP
}
}
}
}
순차적으로 시간에 대한 변수 값을 증가시키면서 성공 카운트와 health 계산을 해주고 조건문을 달아서 return 해주는 방식으로 짰다.
maxHP에 대한 처리, 시간 성공카운트 공격 에 대한 순서만 신경 써주면 크게 어려운 부분은 없는것같다.