728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/250137
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👩💻 코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> bandage, int health, vector<vector<int>> attacks) {
int j = 0;
int continuous = 0;
int currentHealth = health;
for(int i=1; i<=attacks.back().front(); i++){
if(i == attacks[j][0]){
currentHealth -= attacks[j][1];
if(currentHealth <= 0){
return -1;
}
continuous = 0;
j++;
}else{
currentHealth += bandage[1];
continuous++;
if(continuous == bandage[0]){
currentHealth += bandage[2];
continuous = 0;
}
if(currentHealth >= health){
currentHealth = health;
}
}
}
return currentHealth;
}
📝 풀이
모든 공격이 끝난 직후 체력을 구해야 하니까 마지막 공격까지 for문을 돌린다.
공격을 받은 경우와 받지 않은 경우로 구분한다.
공격을 받은 경우는 체력을 깎고 0이하가 되면 -1을 return한다.
연속 시간을 0으로 초기화하고 다음 공격을 비교할 수 있도록 j++를 추가한다.
공격을 받지 않은 경우는 체력을 회복하고 붕대 감기 기술을 성공시켰다면 추가 회복을 하고 연속 시간을 0으로 초기화한다.
만약 현재 체력을 넘는다면 현재 체력을 max체력으로 초기화 한다.
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 최댓값과 최솟값 (0) | 2024.07.10 |
---|---|
[프로그래머스] 가장 많이 받은 선물 (0) | 2024.07.09 |
[프로그래머스] 신고 결과 받기 (0) | 2024.07.06 |
[프로그래머스] 공원 산책 (0) | 2024.07.02 |
[프로그래머스] 달리기 경주 (0) | 2024.06.21 |