
나동빈, 『이것이 취업을 위한 코딩 테스트다 with 파이썬』, 한빛미디어(2020)을 읽고 개인 학습용으로 정리한 내용입니다.
Greedy Algorithm은 현재 상황에서 지금 당장 좋은 것만 고르는 방법으로 문제를 푸는 알고리즘이다.
당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름 돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라.
단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.
💡 문제 해설
'가장 큰 화폐 단위부터' 돈을 거슬러 준다.
📜 .js 답안 예시
let n = 1260;
let count = 0;
// 큰 단위의 화폐부터 차례대로 확인
const coin_types = [500, 100, 50, 10];
for(const coin in coin_types) {
count += n / coin; // 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기
n %= coin;
}
console.log(count);
그리디 알고리즘으로 문제의 해법을 찾았을 때는 그 해법이 정당한지 검토해야 한다.