본문 바로가기

코딩테스트 스터디

코딩테스트 연습 - 개미 군단 (JAVA)

프로그래머스 코딩테스트 입문 0단계 문제입니다

https://school.programmers.co.kr/learn/courses/30/lessons/120837

📢 문제 설명

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

 

⭕ 정답 코드

1. 나의 풀이

class Solution {
    public int solution(int hp) {
        int answer = hp/5;

        hp %= 5;

        answer += hp/3;
        hp %= 3;

        answer += hp; //1은 나눌 필요가 없음

        return answer;   
     }
}
  • / 연산자: 필요한 개미수
  • % 연산자: 충족된 병력을 뺀 나머지 개미수. 이 나머지로 다시 /연산자를 진행한다

2. 다른 분의 풀이

class Solution {
    public int solution(int hp) {
        return (hp/5) + ((hp%5) / 3) + ((hp%5) % 3);
    }
}
  • (장군개미) + (병정개미) + (일개미)        
  • (5로 나눈 몫) + ((장군개미 빼고 남은 개미수)/3) + (장군개미와 병정개미 빼고 남은 수, /1해도 안 해도 같은 결과)
  • 이해가 안 된다면 이렇게 => return (hp/5) + ((hp%5) / 3) + (((hp%5) % 3)/1);
        

✅ 회고

사실.. 1월 27일 문제인데 안 풀려서 미루다가 이제 올린다 반성!

그렇지만 그냥 넘기지 않고 해결한 나에게 칭찬!