프로그래머스 - PCCP 기출 1번 - 붕대 감기 - 구현 - Java

chaemin·2024년 5월 17일
0

프로그래머스

목록 보기
46/64

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/250137

2. 풀이

참고 풀이

시간의 흐름을 while로 처리했는데 생각보다 구현이 쉽지 않았다. 따라서 참고 풀이를 통해 시간흐름을 for문으로 하는게 처리가 편하다는 사실을 알게되었다.

🚨t(연속 성공) 를 직접 수정하지 말고 successTime 이라는 변수를 하나 더 만들어야한다는 것을 유의해야한다.

✨핵심 Point

공격 시간을 Map에 저장해놔서 map.containsKey(i)로 공격 시간을 확인한다.

3. 전체 코드

import java.util.*;

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {

        int n = attacks.length;
        int attackIndex = 0;
        int t = bandage[0];
        int x = bandage[1];
        int y = bandage[2];
        int maxHealth = health;
        int successTime = 0;

        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < n; i++){
            map.put(attacks[i][0], attacks[i][1]);
        }

        for(int i = 1; i <= attacks[n-1][0]; i++){
            if(map.containsKey(i)){ // 공격 수행
                health -= map.get(i);
                successTime = 0;

            } else{
                health += x;
                successTime++;

                if(successTime == t){
                    health += y;
                    successTime = 0;
                }

                if(health > maxHealth){
                    health = maxHealth;
                }
            }

            if(health <= 0){
                return -1;
            }
        }

        return health;
    }
}

0개의 댓글