반응형
간단한 그리디 알고리즘 문제이다. 먼저, 장군개미는 공격력이 5, 병정개미는 3, 일개미는 1이다. 최소 개미병력을 사용해야 하므로 최대한 공격력이 높은 개미로 구성해야 한다.
먼저, 공격력이 제일 작은 일개미를 초기 조건으로 세팅한다. 남아있는 적의 hp가 3미만 일때는 일개미만 동원할 수 있으므로 초기조건으로 넣어준다. 그 후 장군개미를 구성하는 조건을 넣어준다. 적의 hp가 5의 배수일때는 장군개미로만 구성하면 되므로, 5로 나눈 몫으로 개미수를 세팅한다.
그 다음 hp가 5의 배수가 아닐때는 병정개미로 구성한다. 이때 주의할 점은 장군개미때 처럼 3의 배수일때의 조건을 사용하지 않는다. 그 이유는 3의 배수로 조건을 설정하면 적의 hp가 3의 배수이면서 5의 배수일때만 개미를 구성하기 때문이다. 따라서 병정개미는 개미수를 누적합해주고, hp는 3의 누적차로 계산한다.
<정답코드>
class Solution {
public int solution(int hp) {
int answer = 0;
// hp가 0보다 클때까지 loop
while(hp > 0){
// 일개미의 공격력은 1이므로 초기 조건으로 세팅
if(hp < 3){
answer++;
hp -= 1;
}
// 최소한의 개미병력으로 세팅해야 하므로 공격력이 제일 높은 장군개미로 세팅!
if(hp % 5 == 0){
answer += (int)hp / 5;
hp = 0;
break;
}
// 그 다음 공격력이 높은 병정개미로 세팅!
// 장군개미처럼 3의 배수로 세팅하지 않는 이유는 3의 배수이면서 5의 배수인 hp만 조건을 타므로 병정개미는 누적차로 계산
answer++;
hp -= 3;
}
return answer;
}
}
반응형
'알고리즘 공부' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 - JAVA (0) | 2024.08.23 |
---|---|
[프로그래머스] K번째수 (0) | 2024.08.17 |
[프로그래머스] 옷가게 할인 받기 - JAVA (0) | 2024.08.12 |
[프로그래머스] 기능개발 - JAVA (0) | 2024.08.10 |
[프로그래머스] 분수의 덧셈 - JAVA (0) | 2024.08.09 |