콘솔창 & 윈도우창/코딩 테스트
[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;
}