오늘 푼 문제는 거스름돈을 계산하는 문제다.
2원짜리 동전과 5원짜리 동전을 가지고 거스름돈 동전의 최소 개수를 구해야 한다.


let money = require("fs").readFileSync("/dev/stdin").toString().trim();
let coin = 0;
if (money == 1 || money == 3) {
coin = -1;
console.log(coin);
return;
}
while (money > 0) {
if (money >= 5) {
coin = Math.floor(money / 5);
money = money % 5;
} else {
if (money % 2 !== 0) {
coin -= 1;
money = money + 5;
coin = coin + Math.floor(money / 2);
money = money % 2;
} else {
coin = coin + Math.floor(money / 2);
money = money % 2;
}
}
}
console.log(coin);
나는 위와 같은 방법으로 풀었는데 우선
총 동전의 개수(=coin)를 0으로 초기화 하고
만약 거스름돈(=money)이 1원이거나 3원인 경우 거스름돈을 줄 수 없기 때문에 예외 처리를 해주었다.
그리고 거스름돈이 0보다 큰 동안 반복문을 돌렸는데
우선 거스름돈이 5보다 크거나 같으면 money를 5로 나눈 몫을 coin의 개수로 넣어주었고
money는 5로 나눈 나머지로 값을 변경했다.
그리고 만약 거스름돈이 5보다 크지 않은 경우에는 2원짜리로 처리를 해야 하기 때문에
현재 거슬러줘야 하는 돈이 짝수인지 홀수인지를 먼저 구분했다.
홀수인 경우 5원짜리 동전의 개수를 하나 줄여서 총액을 짝수로 만들어 2원으로 거슬러줘야 했기에