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;
}
}
그리디 알고리즘처럼, 어떤 조합을 최소한으로 생각할때 수학적으로 몫과 나머지를 생각해보자!
조합의 가지수를 적게가져가고싶을때는 가장 큰 수부터 몫을 정답에 더해주고, 기준 값을 나머지로 업데이트하며 진행하자.
시간복잡도가 훨씬 줄어든다.