테스트로 출제되어 풀어 본 문제인데
간단해보이지만 계산이 필요했다.
900 - 1
550 - 5
320 - 6
160 - 8
나는 테스트를 최대한 풀어내는 것에 집중해서
간단하고 기본적인 코드를 짜려고 했다.
function solution(num){
let answer = 0;
let money = 1000 - num;
let x = Math.floor(money/500);
money = money - x * 500;
let y = Math.floor(money/100);
money = money - y * 100;
let z = Math.floor(money/50);
money = money - z * 50;
let j = Math.floor(money/10);
money = money - j * 10;
answer = x + y + z + j;
return answer;
}
let num1 = 160;
console.log(solution(num1))
단위가 큰 액수부터 차례로 계산하면서 내려오는 방식
직관적이지만 반복이 많고 겹치는 내용이 많이 나와서 아쉬운 코드다.
네이밍도 시간들이고 싶지 않아서 대충 알파벳으로 변수를 정했다 ㅎㅎ;
반환값은 잘 나오기 때문에 이렇게 제출했지만
다른 코드들도 살펴봤다.
function solution(num) {
let leftMoney = 1000 - num;
let change = [500, 100, 50, 10];
let count = 0;
let i = 0;
while (leftMoney !== 0) {
leftMoney %= change[i];
count += Math.floor(leftMoney / change[i]);
i++;
}
return count;
}
잔돈 단위를 change 변수에 배열로 만들어 준게 포인트
그리고 change 요소들을 하나씩 반복문을 돌려 남은 돈에서 요소로 나눈 나머지를 남기고
나눈 몫은 count에 더해서 갯수를 더한 코드이다.
두 코드 다 쓸 줄 알게 되면 좋겠다^-^