콘솔창 & 윈도우창/코딩 테스트

[PCCP 기출문제] LV.1 붕대감기

뽀또치즈맛 2024. 11. 17. 00:34

 

int solution(vector<int> bandage, int health, vector<vector<int>> attacks) {
    int answer = health, cnt = 0;
    
    map<int, int> atkTime;
	// 마지막 시간까지만 반복문을 돌려주기 위한 작업
    for (int i = 0; i < attacks.size(); i++) {
        atkTime[attacks[i][0]] = attacks[i][1];
    }
	
    for (int i = 0; i <= attacks[attacks.size() - 1][0]; i++) {
    	// 공격 시간과 현재 시간이 같다면
        if (atkTime[i] != 0) {
            answer -= atkTime[i];
            cnt = 0;

            if (answer <= 0) return -1;
        }
        // 공격 시간이 아니라면
        else {
        	// 최대 체력을 넘지 않고, 연속 성공 횟수가 시전 시간을 넘지 않았을 때
            if (answer <= health && cnt < bandage[0]) {
            	// 초당 회복력 추가
                answer += bandage[1];
                // 연속 성공 추가
                cnt++;
                if (cnt >= bandage[0]) {
                	// 초당 회복력 + 연속 성공시
                    answer += bandage[2];
                    // 연속 성공 초기화
                    cnt = 0;
                }
            }
            
        }
		// 최대 체력을 넘지 않도록 하는 예외처리
        if (answer >= health) answer = health;
        
    }

    return answer;
}