본문 바로가기
코딩테스트

[프로그래머스] Lv1. 붕대 감기 - Java

by CuckooBird 2024. 8. 18.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


health를 상수와 같이 사용하고 answer를 변수와 같이 사용했습니다.

 

heal_success로 성공한 횟수를 갱신, 초기화 해주었고, attack_row는 반복문을 돌면서 공격받는 시간의 인덱스를 가져오고자 선언했습니다.

 

초기화 하는 조건은 1. 성공한 뒤에 추가 회복을  받은 뒤, 2. 공격받은 뒤 이므로, 이 두 가지를 신경써서 구현하면 됩니다.

 

추가적으로는 최대 체력을 넘거나, 0이하가 되지 않도록 해야한다는 점을 유의하면 됩니다.

class Solution {
    public int solution(int[] bandage, int health, int[][] attacks) {
        int answer = health;
        
        int n = attacks[attacks.length-1][0];
        int heal_success = 0, attack_row = 0;
        for(int i=0; i<=n; i++) {
            if(i == attacks[attack_row][0]) {
                answer -= attacks[attack_row][1];
                if(answer <= 0) {
                    answer = -1;
                    break;
                }
                attack_row ++;
                heal_success = 1;
            } else if(heal_success == bandage[0]) {
                answer += bandage[1] + bandage[2];
                answer = answer > health ? health: answer;
                heal_success = 1;
            } else {
                answer += bandage[1];
                answer = answer > health ? health: answer;
                heal_success++;
            }
        }
        return answer;
    }
}

 


회고

딱히 어렵지 않은 문제였습니다. 다만 최대 회복을 신경쓰지 않아서 틀렸었습니다.

 

여담이지만 방금 모기 잡다가 왼손 손바닥을 다쳤습니다.. 플라스틱 고리에 손바닥을 내리쳐서.. 너무 아프네요.. ^ㅠ^ 병원갈 일만 아니면 좋겠습니다..