프로그래머스 Lv.1 정답률 낮은 순부터 풀어보고 있는데
그 이상한 카카오톡 선물하기 보다는 이 문제가 훨씬 쉽게 느껴졌다.
문제를 보기 편해서 그런가..?
이 문제는 공격 시간과 그 전 공격 시간 사이의 간격만 잘 파악하면 쉽게 풀 수 있는 문제였다.
먼저 이전 공격시간과 공격시간의 차이가 1초이면 회복을 할 수 없다는 점이
문제 푸는데 나름 함정이라면 함정이라고 할 수 있었다.
그 부분을 빼면 거의 대부분의 분들이 어렵지 않게 풀 수 있을 것이다.
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int casting = bandage[0];
int heal = bandage[1];
int bonusHeal = bandage[2];
int maxHealth = health;
int preAtkTime = attacks[0][0];
for(int i = 0; i < attacks.length; i++) {
int atkTime = attacks[i][0];
int atkDemage = attacks[i][1];
int between = atkTime - preAtkTime - 1;
if(between > 0) {
health += heal * between;
health += bonusHeal * (between / casting);
if(health > maxHealth) {
health = maxHealth;
}
}
health -= atkDemage;
if(health <= 0) return -1;
preAtkTime = atkTime;
}
return health;
}
}