[Javascript] 백준 - 2839 설탕공장

Isabel·2022년 6월 28일
0

알고리즘 문제풀이

목록 보기
30/36

문제설명

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

출력

상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

let n = require('fs').readFileSync('/dev/stdin');
let result = 0;

while(true){
  if (n<0) {
    console.log (-1);
    break;
  }
  if (n%5 === 0) {
    result = result + n/5;
    console.log(result);
    break;
    
  } else {
    n = n - 3;
    result++;
  }
}

문제풀이

처음에는 3의 배수로 끝날 때, 5의 배수로 끝날 때 나눠서 해결하고, 나머지 경우를 else문으로 해결하려고 했다. 그렇게 했더니 경우를 일일이 나눠서 확인해보아야 했기 때문에 너무 코드가 길어지고 복잡해졌다. 숫자가 3과 5의 공배수라면 5사이즈의 가방에 넣는 경우가 더 적은 가방의 수를 return하기 때문에 먼저 5의 배수인지 확인하고 아니라면 3씩 차감(3사이즈의 가방에 넣기) 가방의 개수를 하나씩 늘렸다. 그런 방식으로 3씩 감하다가 3의 배수도 아니고 5의 배수도 아니어서 음수가 되는 경우에는 '-1'을 return 하게 계산하였다.

0개의 댓글