[PCCP 기출문제] 1번 / 붕대 감기
2024. 12. 2. 18:14ㆍ에러&&공부노트
풀이
function solution(bandage, health, attacks) {
const [castTime, healPerSec, bonusHeal] = bandage;
const maxHealth = health;
let currentHealth = health;
let consecutiveHealing = 0;
let lastAttackTime = 0;
// attacks를 Object로 변환하여 빠른 검색이 가능하게 함
const attackMap = {};
attacks.forEach(([time, damage]) => {
attackMap[time] = damage;
lastAttackTime = Math.max(lastAttackTime, time);
});
// 0초부터 마지막 공격 시간까지 진행
for (let time = 0; time <= lastAttackTime; time++) {
// 공격이 있는 경우
if (attackMap[time] !== undefined) {
currentHealth -= attackMap[time];
consecutiveHealing = 0;
// 체력이 0 이하가 되면 캐릭터 사망
if (currentHealth <= 0) {
return currentHealth = -1;
}
}
// 공격이 없는 경우 회복
else {
// 기본 회복
currentHealth += healPerSec;
consecutiveHealing++;
// 연속 성공 보너스 체력 회복
if (consecutiveHealing === castTime) {
currentHealth += bonusHeal;
consecutiveHealing = 0;
}
// 최대 체력을 초과할 수 없음
if (currentHealth > maxHealth) {
currentHealth = maxHealth;
}
}
}
return currentHealth;
}
'에러&&공부노트' 카테고리의 다른 글
[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2024.12.02 |
---|---|
아키텍쳐 패턴과 디자인 패턴 (0) | 2023.04.21 |
백준 24479번 풀이 python (0) | 2023.01.04 |
백준 24480번 풀이 python (0) | 2023.01.04 |
백준 9663번 풀이 python (0) | 2022.12.30 |