Creative Code

붕대 감기 본문

프로그래머스 코테 문제/LEVEL 1

붕대 감기

빛하루 2024. 4. 12. 18:08

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

 

프로그래머스

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

programmers.co.kr

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>


using namespace std;

int solution(vector<int> bandage, int health, vector<vector<int>> attacks) {
    int answer = 0;
    int success = 0; // 연속 성공시간
    int status_health = health; // 현재체력
    int timeend = attacks[attacks.size() - 1][0]; //몬스터의 마지막 공격시간
    int index = 0; // attacks 탐색 index
    for (int i = 1; i <= timeend; i++) {
        if (i == attacks[index][0]) { // 몬스터가 공격할 때
            status_health -= attacks[index][1];
            if (status_health <= 0) { // 캐릭터가 사망 시  -1을 리턴
                return -1;
            }
            index++; // 캐릭터가 안죽었을 때 다음 index로 변경
            success = 0; // 캐릭터가 공격받을 시 연속 회복시간 초기화
        }
        else { // 몬스터가 공격받지 않아 회복할 때
            success += 1; // 연속 회복성공 시간 1초 추가
            status_health += bandage[1]; // 체력 회복
            if (success == bandage[0]) { // 연속 회복 모두 성공시 추가회복
                status_health += bandage[2];
                success = 0;
            }
            if (status_health >= health) { // 회복후 체력이 최대체력보다 많을시 최대체력으로 변경
                status_health = health;
            }
        }
    }
    return status_health;
}

'프로그래머스 코테 문제 > LEVEL 1' 카테고리의 다른 글

가장 많이 받은 선물  (0) 2024.04.12
데이터 분석  (0) 2024.04.12
이웃한 칸  (0) 2024.04.12