728x90
코드 힌트
- 턴제 게임:
- 게임은 턴제로 진행되며, 몬스터가 공격하는 턴에는 회복을 할 수 없습니다.
- 반면, 공격이 없는 준비 턴에는 체력을 회복할 수 있습니다.
- 기본 체력 회복:
- 매 턴마다 기본 회복량이 적용됩니다.
- 공격이 발생하기 전까지 회복은 계속되며, 이로 인해 체력이 점진적으로 증가합니다.
- 추가 회복:
- 일정 시간마다 추가적인 회복이 발생합니다.
- 이 회복은 주기적으로 일어나며, 기본 회복과 함께 체력을 추가로 회복시킬 수 있습니다.
- 공격 처리:
- 몬스터의 공격이 발생하면 현재 체력에서 공격 데미지만큼 감소합니다.
- 공격 후 회복 주기가 초기화되므로, 다음 공격까지 체력을 최대한 회복하는 것이 중요합니다.
- 게임 종료 조건:
- 체력이 0 이하로 떨어지면 즉시 게임이 종료됩니다.
- 모든 공격을 견뎌낸 후 남은 체력이 게임의 최종 결과로 반환됩니다.
정답은 더보기 클릭
더보기
class Solution {
// 경과된 회복 시간을 추적하는 변수
static int healingCounter = 0;
// 최대 체력을 저장하는 변수
static int maxHp;
public int solution(int[] bandage, int health, int[][] attacks) {
int currentTime = 0;
int t = bandage[0]; // 기본 회복 시간이 지나면 회복이 강화되는 시간 간격
int x = bandage[1]; // 매 턴마다 회복되는 기본 체력량
int y = bandage[2]; // 기본 회복 시간(t)이 경과된 후 추가로 회복되는 체력량
maxHp = health; // 최대 체력을 초기 체력으로 설정
for (int[] attack : attacks) {
currentTime++;
int nextTime = attack[0]; // 다음 공격이 발생하는 시간
int damage = attack[1]; // 이번 공격으로 입는 피해량
// 현재 시간부터 다음 공격 시간까지 회복 처리
while (currentTime < nextTime) {
currentTime++;
health = applyHealing(t, x, y, health);
}
// 공격에 의한 체력 감소
health -= damage;
healingCounter = 0; // 공격을 받으면 회복 시간 초기화
if (health <= 0) return -1; // 체력이 0 이하가 되면 패배
}
return health; // 모든 공격을 견뎌낸 후의 남은 체력 반환
}
// 주어진 조건에 따라 플레이어의 체력을 회복하는 메소드
public static int applyHealing(int t, int x, int y, int health) {
int result = health;
healingCounter++; // 경과된 회복 시간 증가
// 기본 회복 처리
if (health + x <= maxHp) result += x;
else result = maxHp;
// 추가 회복 처리
if (healingCounter == t) {
healingCounter = 0;
if (result + y <= maxHp) result += y;
else result = maxHp;
}
return result; // 회복된 체력 반환
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 공원 산책 (0) | 2024.08.27 |
---|---|
[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2024.08.26 |
[프로그래머스] [1차] 다트 게임 (1) | 2024.08.20 |
[프로그래머스] 문자열 나누기 (0) | 2024.08.16 |
[프로그래머스] 신고 결과 받기 (0) | 2024.08.12 |