프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int answer = 0;
int castTime = bandage[0];
int healPerSec = bandage[1];
int lastHeal = bandage[2];
int maxHealth = health;
int attackLimit = attacks.length;
int time = 0; // 시간
int curAttackIndex = 0; // attacks[curAttackIndex] = 다음 공격의 시간
int success = 0; // 연속 공격 횟수
while(true){
time++;
// 몬스터가 공격하는 경우
if(attacks[curAttackIndex][0] == time){
health -= attacks[curAttackIndex][1];
curAttackIndex += 1;
success = 0;
}
// 몬스터가 공격하지 않는 경우
else{
success += 1;
health += healPerSec;
if(success == castTime){
health += lastHeal;
success = 0;
}
// 초과된 체력을 최대 체력으로 조정
if(maxHealth < health){
health = maxHealth;
}
}
// 체력이 0 이하가 된 경우
if(health <= 0){
answer = -1;
break;
}
// 몬스터 공격이 끝난 경우
if(attackLimit == curAttackIndex){
answer = health;
break;
}
}
return answer;
}
}
단순한 구현 문제이다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
다단계 칫솔 판매 Java (0) | 2024.02.25 |
---|---|
행렬 테두리 회전하기 Java (0) | 2024.02.23 |
[PCCP 기출문제 2번] 석유 시추 (0) | 2024.02.22 |
[2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 (0) | 2024.01.24 |
[2021 KAKAO 채용연계형 인턴십] 거리두기 확인하기 (0) | 2024.01.24 |