문제 설명
개미군단이 사냥을 나가려고 합니다. 개미 군단은 사냥감ㅁ의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성헤주세요.
<제안사항>
1) hp는 자연수입니다.
2) 0 <= hp <= 100
내가 직접 짠 코드
class Solution {
public int solution(int hp) {
int answer = 0;
for(int i=5; i>=1; i-=2) {
answer+=hp/i;
hp%=i;
if(hp<=0) break;
}
return answer;
}
}
코드 해설
1) 5부터 1까지 2씩 감소하는 반복문을 짠 다음
2) answer은 hp/i만큼 더해주고
3) hp는 hp%i만큼 변경시켜준 다음
4) hp가 0보다 작거나 같으면 반복문을 빠져나오게 짜봤습니다!
다른 사람의 풀이
class Solution {
public int solution(int hp) {
return hp / 5 + (hp % 5 / 3) + hp % 5 % 3;
}
}
와 어떻게 이런 생각을 할 수 있을까요...
보면서 감탄했습니다
저도 저 나름대로 효율적인 코드를 짰다고 생각했는데 아니였군요
반성했습니다...(눈물)
'CodingTest' 카테고리의 다른 글
프로그래머스 - 문자열 뒤집기 (JAVA) (0) | 2023.01.31 |
---|---|
프로그래머스 - 나이 출력 (JAVA) (0) | 2023.01.31 |
프로그래머스 - 팩토리얼 (JAVA) (0) | 2023.01.26 |
프로그래머스 - A로 B 만들기 (0) | 2023.01.25 |
프로그래머스 - 인덱스 바꾸기 (JAVA) (0) | 2023.01.19 |