-
[프로그래머스 level 0] 개미 군단(Java)알고리즘/문제 2022. 11. 9. 19:14
🔸 개미 군단
[문제설명]
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
[제한사항]
- hp는 자연수입니다.
- 0 ≤ hp ≤ 1000
// 내가 푼 풀이 class Solution { public int solution(int hp) { int answer = hp / 5 + hp % 5 / 3 + hp % 5 % 3; return answer; } } <br> // 다른 사람 풀이 class Solution { public int solution(int hp) { int cnt = 0; cnt += (hp / 5); hp %= 5; cnt += (hp / 3); hp %= 3; cnt += (hp / 1); return cnt; } }
먼저, 내가 푼 풀이는 위 문제 요지가 최소한의 병력으로 구성하기 위함이므로 가장 공격력이 큰 5로 hp를 나눈 나머지를 그 다음 작은 3으로 나누고, 마지막은 1로 할당해 최종적으로 나온 몫의 개수를 return 하여 풀었음. 다른 사람 풀이를 보니 결국 cnt를 세기 위함이므로 cnt에 몫의 개수를 계속 축적하여 쌓아 최종적으로 cnt값을 return 하는 알고리즘을 보니 내가 푼 풀이 방법은 코드 라인 수를 줄여 간단할 수 있으나 가독성이 떨어져보였다. 두 번째 방법이 더 체계적이고, 가독성이 좋아 인상깊었고, 좋은 방법인 것 같다.
'알고리즘 > 문제' 카테고리의 다른 글
[프로그래머스 level 0] 주사위의 개수(Java) (0) 2022.11.10 [프로그래머스 level 0] 중앙값 구하기(Java) (0) 2022.11.09 [프로그래머스 level 0] 세균 증식(Java) (0) 2022.11.08 [프로그래머스 level 0] 배열의 유사도(Java) (0) 2022.11.07 [프로그래머스 level 0] 편지(Java) (0) 2022.11.06