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

Lv. 1

Solution

export function windBandage(
  bandage: number[],
  health: number,
  attacks: [number, number][],
): number {
  function getHealAmount(time: number) {
    return time * bandage[1] + Math.floor(time / bandage[0]) * bandage[2];
  }
 
  let elapsedTime = 0;
  let currentHealth = health;
  for (const [time, damage] of attacks) {
    currentHealth += getHealAmount(time - elapsedTime - 1);
    currentHealth = Math.min(currentHealth, health);
    currentHealth -= damage;
    if (currentHealth <= 0) {
      return -1;
    }
    elapsedTime = time;
  }
 
  return currentHealth;
}