본문 바로가기
코테

[java] 붕대감기 (해설포함)

by zenna 2024. 4. 9.
728x90
테스트케이스 최대 소요시간 : 0.06ms

 

문제 요약

//1초에 x만큼 회복하고, t를 채우면 y가 추가됨
bandage = [시전시간 t, 초당회복력x, 추가회복량 y]
health = 최대체력
attacks = [ [공격시간,피해량], [공격시간, 피해량] ...]

 

제출답안

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {
        int nowHealth = health - attacks[0][1];
        if (nowHealth <= 0 ){
            return -1;
        }
        for ( int i =1 ; i < attacks.length ; i++ ){
            int betweenTime = attacks[i][0] - attacks[i-1][0] - 1;
            nowHealth += bandage[1] * betweenTime + ((int)(betweenTime/bandage[0])) * bandage[2];
            if(nowHealth> health ) nowHealth = health;
            nowHealth -= attacks[i][1] ;
            if (nowHealth <= 0){
                return -1;
            }
        }
        return nowHealth;
    }
}

문제해설

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {
        // nowHealth = 현재체력. 첫번째 공격까지는 최대체력 health와 동일
        int nowHealth = health - attacks[0][1]; // 1번째 공격
        if (nowHealth <= 0 ){ // 1공격만에 사망한경우
            return -1;
        }
        // 2번째 공격부터는 FOR문으로 진행됨
        for ( int i =1 ; i < attacks.length ; i++ ){ //1번째 공격은 이미 진행되었으므로 i = 1로 시작
            int betweenTime = attacks[i][0] - attacks[i-1][0] - 1; 
                                // betweenTime = 현재 공격과 이전 공격의 시간차이(초)
                                // 이번 공격을 받기 직전의 회복된 상태를 만들려는 것이므로 -1
            nowHealth += bandage[1] * betweenTime + ((int)(betweenTime/bandage[0])) * bandage[2];
                                // 시간차이 * 초당 회복량 + 연속성공횟수 * 추가 회복량
            if(nowHealth> health ) nowHealth = health;
                                // 회복된 체력이 최대체력을 넘는 경우 최대체력으로 맞춰줌
            nowHealth -= attacks[i][1] ; // (i+1)번째 공격받음
            if (nowHealth <= 0){ // 사망했다면
                return -1; // -1리턴
            }  //사망하지 않았다면 다음 회차의 공격 계산
        }
        return nowHealth; // 남은체력 리턴   
    }
}

#99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #TIL

728x90

'코테' 카테고리의 다른 글

[Java] 정수 제곱근 판별  (0) 2024.04.11
[JS] 성격 유형 검사 (해설포함)  (0) 2024.04.10
[Java] 없는 숫자 더하기  (0) 2024.04.08
[JS] 나누어 떨어지는 숫자 배열  (0) 2024.04.07
[Java] 짝수와 홀수  (0) 2024.04.06

댓글