제목 및 문제 설명



풀이
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int check = 0; // 연속 붕대 감은 시간
int maxHealth = health; // 최대 체력
int attackIndex = 0; // 공격 배열에서 현재 공격을 확인할 인덱스
for (int i = 1; i <= attacks[attacks.length - 1][0]; i++) {
// 현재 공격이 있는지 확인
if (attackIndex < attacks.length && attacks[attackIndex][0] == i) {
// 공격 시간에 도달하면 체력 감소
health -= attacks[attackIndex][1];
attackIndex++; // 다음 공격으로 이동
check = 0; // 붕대 감기 시간 초기화
} else {
// 붕대 감기 진행
health += bandage[1]; // 1초당 회복량 추가
check++;
// t초 연속 성공하면 추가 회복량 적용
if (check == bandage[0]) {
health += bandage[2];
check = 0;
}
// 체력이 최대 체력을 초과하지 않도록 조정
if (health > maxHealth) {
health = maxHealth;
}
}
// 체력이 0 이하이면 즉시 종료
if (health <= 0) {
return -1;
}
}
return health;
}
}
문제 팁과 풀이, 시행착오
단순 풀린 코드인 매번 모든 공격을 검사하는 형식으로 for문을 돌려 문제를 풀려 했으나
영역 지정을 잘 못해 ArrayIndexOutOfBoundsException 오류가 나게 되어
attackIndex를 추가하여 매번 모든 공격을 검사하지 않고, 순차적으로 공격을 확인하도록 변경하고
쓸대 없는 긴 코드를 간소화
'Algorithm > Java' 카테고리의 다른 글
[PCCE 기출문제] 10번 / 데이터 분석 (0) | 2025.04.01 |
---|---|
[PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2025.03.31 |
[PCCE 기출문제] 10번 / 공원 (0) | 2025.03.27 |
[PCCE 기출문제] 9번 / 지폐 접기 (0) | 2025.03.26 |
[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2025.03.25 |