https://school.programmers.co.kr/learn/courses/30/lessons/250137
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int castingTime = bandage[0];
int healthPerSecond = bandage[1];
int additionalHealth = bandage[2];
int endTime = attacks[attacks.length - 1][0];
int maxHealth = health;
int successTime = 1;
int attackIndex = 0;
int death = -1;
for (int time = 1; time <= endTime; time++) {
// 몬스터 공격
if (attackIndex < attacks.length && attacks[attackIndex][0] == time) {
health -= attacks[attackIndex][1];
if (health <= 0) {
return death;
}
successTime = 1; // 몬스터 공격으로 인해 붕대 감기 시간 초기화
attackIndex++;
} else {
// 캐릭터 회복
health = Math.min(maxHealth, health + healthPerSecond);
if (successTime == castingTime) {
health = Math.min(maxHealth, health + additionalHealth);
successTime = 1;
} else {
successTime++;
}
}
}
return health;
}
}
'Algorithm' 카테고리의 다른 글
(Java) 뒤집은 소수 (1) | 2024.01.27 |
---|---|
(Python) 알아두면 좋은 점 (0) | 2024.01.27 |
(Java) 구간 합 구하기(백준 11659) (0) | 2023.06.06 |
(Java) 평균 구하기(백준 1546) (0) | 2023.06.06 |
(Java) 숫자의 합 구하기(백준 11720) (0) | 2023.06.04 |