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;
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
프로그래머스 LV.1 모의고사 (0) | 2024.11.23 |
---|---|
프로그래머스 LV.2 가장 큰 수 (0) | 2024.11.19 |
프로그래머스 LV.2 오픈채팅방 (카카오 코테) (0) | 2024.11.15 |
프로그래머스 LV.2 귤 고르기 (1) | 2024.11.15 |
프로그래머스 LV.2 기능개발 (1) | 2024.11.14 |