🗣️ 메모
if문 속 if문이 나오는 복잡한 로직이라도 주석을 기재하면서 차근차근 짜 보면 됨!
✏️ [개미 군단]
문제 설명
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
제한사항
- hp는 자연수입니다.
- 0 ≤ hp ≤ 1000
입출력 예
hpresult
23 | 5 |
24 | 6 |
999 | 201 |
입출력 예 설명
입출력 예 #1
- hp가 23이므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.
입출력 예 #2
- hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.
입출력 예 #3
- hp가 999이므로, 장군개미 199 마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 201을 return합니다.
🔥🎉 TRY #1 [실행 결과]
👉🏻 방법은 주석 참고
class Solution {
public int solution(int hp) {
int answer = 0;
// 여치의 체력이 5 이상
if(hp >= 5) {
// hp가 5로 나누어떨어지지 않는다면 장군개미로만은 불가능함
if(hp % 5 != 0) {
answer = (int)Math.floor((double)hp / 5); // 장군개미가 필요한 수를 뽑음
hp = hp % 5; // 남은 숫자를 hp로 바꾸면 5 미만이 될 것
if(hp % 3 != 0) { // 병정개미로만 불가능함
answer += (int)Math.floor((double)hp / 3); // 병정개미가 필요한 수를 뽑음
hp = hp % 3; // 남은 숫자를 hp로 바꾸면 3 미만이 될 것
answer += hp; // 1, 2의 경우 일개미의 숫자와 동일함
} else { // 병정개미로만 가능함
answer += hp / 3; // 병정개미의 수를 더해 줌
}
// hp가 5로 나누어떨어진다면 장군개미로만 가능함
} else {
answer = hp / 5;
}
// 여치의 체력이 3 이상
} else if (hp >= 3) {
if(hp % 3 != 0) { // hp가 3으로 나누어떨어지지 않는다면 병정개미로만은 불가능함
answer += (int)Math.floor((double)hp / 3); // 병정개미가 필요한 수를 뽑음
hp = hp % 3; // 남은 숫자를 hp로 바꾸면 3 미만이 될 것
answer += hp; // 1, 2의 경우 일개미의 숫자와 동일함
} else {
answer += hp / 3;
}
// 여치의 체력이 3 미만이라면 일개미만 투입되므로 answer = hp
} else {
answer = hp;
}
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습,https://school.programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr