[프로그래머스] Level0.개미 군단

Benjamin·2023년 1월 31일
0

프로그래머스

목록 보기
3/58

내 풀이

class Solution {
    public int solution(int hp) {
        int answer = 0;
        while(hp-5>=0) {
            hp -= 5;
            answer++;
        }
        while(hp-3>=0) {
            hp -= 3;
            answer++;
        }
        while(hp-1>=0) {
            hp -= 1;
            answer++;
        }
        return answer;
    }
}

반복문을 3번 이용해서, 조금 시간복잡도가 비효율적으로 나올것같았다.

다른 풀이

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

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

        answer += hp / 1;

        return answer;
    }
}

그리디 알고리즘처럼, 어떤 조합을 최소한으로 생각할때 수학적으로 몫과 나머지를 생각해보자!
조합의 가지수를 적게가져가고싶을때는 가장 큰 수부터 몫을 정답에 더해주고, 기준 값을 나머지로 업데이트하며 진행하자.

시간복잡도가 훨씬 줄어든다.

0개의 댓글