조건 확인 필수*
설탕봉지는 5kg 3kg짜리만 있다.
N(kg)를 5와 3으로 % 했을때 0이 되야 카운트가 늘어나는 생각을 할 수 있다.
while는 참이면 무한 루프를 돌기때문에 break를 써야한다.
let input = require('fs').readFileSync('/dev/stdin');
let count = 0;
while (true) {
if (input % 5 === 0) {
console.log(input / 5 + count);
break;
}
if (0 > input) {
console.log(-1);
break;
}
count++;
input -= 3;
}
가장 적은 갯수를 구해야 하니 큰 수인 5(kg)를 나누며 시작한다.
인풋이 18이면 5로 나누어 떨어지지 않으니 false 문을 들어간다.
맨밑
count++;
input -= 3;
카운트는 하나 더해주고 18-3 하고 위로 다시 가
그러면 15가 올라가고 위에 첫번쨰 조건문에 처리 되어 브레이크 된다.
동적계획법 - DP(Dynamic Programming) 정리
동적계획법은 문제의 최적해를 구하거나 답의 개수를 세는 과정에 사용할 수 있는 알고리즘 설계 기법입니다. 동적계획법을 사용하면 불필요한 계산을 줄이고, 효율적으로 최적해를 찾을 수 있습니다.
메모이제이션(Memoization)
동일한 문제를 반복해야 할 경우, 미리 계산해서 저장해 둔 결과를 활용하여 중복 연산을 줄이는 방식을 메모이제이션이라고 한다. 동적 계획법은 중복되는 하위 문제를 메모이제이션을 이용해 효율적으로 해결할 수 있다.
동적 계획법 설명 영상 - https://www.youtube.com/watch?v=FmXZG7D8nS4