[ 프로그래머스 ] 개미 군단(JAVA)
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120837
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
- 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군 개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다.
- 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다.
- 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요,
제한사항
- hp는 자연수입니다.
- 0 ≤ hp ≤ 1000
입출력 예 설명
입출력 예 #1
- hp가 23치므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.
입출력 예 #2
- hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.
입출력 예 #3
- hp가 999이므로, 장군개미 199마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 201을 return합니다.
💡 내가 푼 방식
class Solution {
public int solution(int hp) {
int general = hp / 5;
hp = hp % 5;
int soldier = hp / 3;
hp = hp % 3;
int worker = hp;
return (general + soldier + worker);
}
}
✔️ 자바에서 int / int는 자동으로 몫만 계산된다.(소수점 이하 버림)
✔️ 나머지가 필요하면 % 연산자를 써서 계산에 이용
🐜 개미 문제 - 병력 계산 과정 (그리디 알고리즘)
단계 | 사용한 개미 종료 | 공격력 | 몇 마리 사용? | 남은 체력 |
1 | 장군개미(general) | 5 | hp / 5 | hp % 5 |
2 | 병정개미(soldier) | 3 | (hp % 5) / 3 | hp % 3 |
3 | 일개미(worker) | 1 | 나머지 | 0 |
🔥 가장 센 개미부터 최대한 사용하는게 핵심! 이게 바로 그리디(Greedy) 전략
✅ 그리디 알고리즘(Greedy Algorithm)
- 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법으로 '각 단계에서 최적이라고 생각되는 것을 선택'해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘이다.
- 이때, 항상 최적의 값을 보장하는 것이 아니라 최적의 값의 '근사한 값'을 목표로 하고 있다.
- 그리디 알고리즘의 대표적인 예로는 거스름돈 문제가 있다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 순서쌍의 개수(JAVA) (0) | 2025.03.20 |
---|---|
[프로그래머스] 머쓱이보다 키 큰 사람(JAVA) (0) | 2025.03.20 |
[프로그래머스] 직각삼각형 출력하기 (JAVA) (0) | 2024.04.03 |
[프로그래머스] 특정 문자 제거하기(JAVA) (0) | 2024.03.27 |
[프로그래머스] 중앙값 구하기 (JAVA) (0) | 2024.03.22 |