카테고리 없음

[알고리즘] 설탕배달 javascript

ShinBW 2022. 2. 3. 01:29

조건 확인 필수*

설탕봉지는 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