[백준] 거스름돈 #14916

4191 단어 백준1491614916

후기

생각해보면 -1이 나올 경우가 N이 1과 3일때 뿐이어서 해당 숫자일 경우 -1을 리턴해줬다.
나머지는 greedy 문제답게 최대한 5원짜리 동전을 많이쓰려했고, 많이쓰려했지만 나머지가 홀수일 경우 하나빼주면 짝수가 되서 무조건 2로 나누어 떨어지기 때문에 아래와 같이 코드를 구현했다.(홀수 + 홀수(5) = 짝수 이므로)

Node.js 풀이

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

const solution = (N) => {
  if (N === 1 || N === 3) return -1;
  let nFive = Math.floor(N / 5);
  N = N % 5;
  if (N % 2 === 1) {
    nFive--;
    N += 5;
  }
  return nFive + N / 2;
};

console.log(solution(Number(input)));

좋은 웹페이지 즐겨찾기