즉 가장 최적의 값을 찾는것이라고 보면된다. 만약 물건을 사고 거스름돈을 주어야 할 경우 가장 큰 단위의 지폐나 동전을 먼저 준다음 나머지 단위의 지폐나 동전으로 거스름돈을 거슬러주어 최적화 시킨다고 보면된다.
- 선택 절차(Selection Procedure): 현재 상태에서의 최적의 해답을 선택
- 적절성 검사(Feasibility Check): 선택된 해가 문제의 조건을 만족하는지 검사
- 해답 검사(Solution Check): 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복
코드예시
문제: 거스름돈을 거슬러줘야 할경우 동전의 갯수를 최소화하는 알고리즘.
function partTimeJob(k) {
// 내가 총 거슬러줘야 하는돈이 k
let coin = [500,100,50,10,5,1]
let result = 0 // 현재까지 최고의 효율로 세어둔 돈.
let count = 0 //현재 사용한 동전의 갯수
for(let key of coin){
while(result <= k){
result = result + key
count++
}
if(result > k){
result = result -key
count--
}
}
return count
}