class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int finalAttackTime = attacks[attacks.length-1][0];
//1 ≤공격시간≤ 1,000
int[] attackTimeArr = new int[1001];
int currentHealth = health;
for(int i=0; i<attacks.length; i++) {
int attackTime = attacks[i][0];
int damage = attacks[i][1];
attackTimeArr[attackTime] = damage;
}
int successStack = 0;
for(int i=1; i<=finalAttackTime; i++) {
// attack이 있었다면 체력 - 처리 후 continue, 만약 체력이 0 이하라면 break
if(attackTimeArr[i] >= 1) {
currentHealth -= attackTimeArr[i];
successStack = 0;
if(currentHealth <= 0) {
currentHealth = -1;
break;
}
continue;
}
// 현재 체력 == max 체력일때 처리
if(currentHealth == health) {
successStack = 0;
continue;
}
// 회복 성공
currentHealth += bandage[1];
successStack++;
// 연속회복 성공시
if(successStack == bandage[0]) {
currentHealth += bandage[2];
successStack = 0;
}
// 회복완료 후 max체력이 넘지 않도록 처리
if(currentHealth >= health) {
currentHealth = health;
}
}
return currentHealth;
}
}
반응형
'Java > 알고리즘' 카테고리의 다른 글
[Java] 프로그래머스 [2024 KAKAO WINTER INTERNSHIP] 가장 많이 받은 선물 (1) | 2024.09.28 |
---|---|
[Java] 프로그래머스 [PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2024.09.27 |
[Java] 프로그래머스 [PCCE 기출문제] 10번 / 공원 (0) | 2024.09.24 |
[Java] 백준-11047 동전 0 (그리디 알고리즘) (0) | 2022.10.20 |
[Java] 백준-1764 듣보잡 (0) | 2022.10.20 |
댓글