백준 2839번

정하윤·2022년 8월 4일
0
post-custom-banner
let fs = require("fs");
// let input = fs.readFileSync('/dev/stdin').toString().split(' ');
let input = fs.readFileSync("inp.txt").toString().split(" ");
let num = input.map((e) => Number(e));

for (let i = 1; i <= Math.ceil(num[0] / 3); i++) {
  if (num[0] % 5 == 0) {
    console.log(num[0] / 5);
    break;
  } else if ((num[0] - 3 * i) % 5 === 0) {
    console.log((num[0] - 3 * i) / 5 + i);
    break;
  } else if (
    (num[0] - 3 * i) % 5 !== 0 &&
    num[0] % 3 !== 0 &&
    num[0] % 5 !== 0
  ) {
    console.log(-1);
    break;
  }
}

맨처음 for문으로 풀다가 작은수의 입력값은 출력값이 제대로나오는데 범위설정도 하기어렵고 뒤로갈수록 답이 계속틀려서 for문으로는 힘들거 같아서 while문을 사용해서 풀어보았습니다.

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString();

let N = Number(input);
let f = 0;
let t = 0;

while(true){
    if(N % 5 === 0){
        five = N / 5;
        console.log(five + three);
        break;
    }
    if(N < 0){
        console.log(-1);
        break;
    }
    N = N - 3;
    three++;
}

1.for문에서 했던거와 같이 우선 제일적은 설탕의 개수를 들때인 5의 나머지가 0일경우를 구한값을 구했습니다.
2.그리고 맨밑에서 N에서 3을계속빼주고 5를나눠주는데 나오지않아서 N이 0보다 작아질때를 -1로 값을 정했습니다.
3.2번에서 말했다싶이 맨밑에서 3을 한번식 계속 뺴주는 식으로 정했습니다.

post-custom-banner

0개의 댓글