프로그래머스 - 개미 군단

남궁진 (jinvicky)·2026년 4월 6일

Problem


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

Solution


거스름돈 문제와 완전히 똑같은 문제다. 시간이 오래 걸린 포인트는 while문의 >= 부분이었다.

>=를 써야 정확하게 “딱 나누어 떨어지는 경우”까지 처리되기 때문이다.
hp가 5가 남았는데 >이면 5에서 처리할 수 없기 때문이다.

그런데 사실 이 문제는 while문도 필요가 없다. 내가 이미 hp / top 식으로 한번에 처리했기 때문이다. 그래서 2가지 방식으로 풀이할 수 있겠다.

Code


내가 풀이한 답 (while 필요없음)

class Solution {
    public int solution(int hp) {
        int top = 5;
        int middle = 3;
        int low = 1;
        
        int answer = 0;
        
        while(hp >= top) {
            answer += hp / top;
            hp %= top;
        }
        
        while (hp >= middle) {
            answer += hp / middle;
            hp %= middle;
        }
        
        while (hp >= low) {
            answer += hp / low;
            hp %= low;
        }
        
        return answer;
    }
}

가장 간단한 답

class Solution {
    public int solution(int hp) {
        int answer = 0;
        
        answer += hp / 5;
        hp %= 5;
        
        answer += hp / 3;
        hp %= 3;
        
        answer += hp;
        
        return answer;
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글