728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/250137
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 유형
구현
문제 난이도
Lev1
문제 분석
시전 시간(t) 동안 1초에 x만큼 회복, t초 연속으로 회복 성공할 시, y만큼 추가 회복
조건
1. 최대 체력을 넘어서 체력을 회복하지 못한다.
2. 몬스터에게 공격 당할 시, 체력 회복 하지 못하고 연속 시간은 0으로 초기화
3. 체력이 0 이하가 되면 캐릭터가 사망하며, -1을 return 한다.
문제는 주어진 조건에 맞춰서 그대로 작성하면 된다.
전체 코드
import java.util.*;
import java.io.*;
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
// 연속 시간
int connection = 0;
int currHealth = health;
Arrays.sort(attacks, (o1, o2) ->
Integer.compare(o1[0], o2[0]));
// 최대 시간
int time = attacks[attacks.length-1][0];
int idx = 0;
for(int i = 0; i <= time; i++) {
// 연속 시간이 시전 시간과 동일하다면 추가 체력을 회복한다.
if(connection == bandage[0]) {
currHealth = Math.min(currHealth + bandage[2], health);
connection = 0;
}
// 몬스터에게 공격 당하는 순간
if(attacks[idx][0] == i) {
currHealth -= attacks[idx][1];
connection = 0;
if(currHealth <= 0) return -1;
idx++;
} else {
// 공격 당하지 않는다면
currHealth = Math.min(currHealth + bandage[1], health);
connection++;
}
}
return currHealth;
}
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[PCCP 기출 3번] 아날로그 시계 (1) | 2025.06.06 |
---|---|
[PCCP 기출 2번] 석유 시추 (1) | 2025.06.05 |
[2024 KAKAO INTERN] 주사위 고르기 (0) | 2025.06.05 |
[PCCP 기출 10번] 공원 (0) | 2025.06.02 |
[PCCP 기출 9번] 지폐 접기 (1) | 2025.06.01 |