알고리즘(26)
-
그리디 알고리즘(탐욕법) - [문제] 거스름돈
당신은 음식점의 계산을 도와주는 점원입니다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정합니다. 손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러주어야 할 동전의 최소 개수를 구하세요. (단, 거슬러줘야 할 돈 N은 항상 10의 배수입니다.) 최적의 해를 빠르게 구하기 위해서는 가장 큰 화폐 단위부터 돈을 거슬러 주면 된다. N원을 거슬러줘야할 때, 가장 먼저 500원으로 거슬러 줄 수 있을만큼 거슬러 준다. 이후에 100원, 50원, 10원짜리 동전을 차례대로 거슬러 줄 수 있을 만큼 거슬러 주면 된다. N=1250일 때의 예시 1250/500 = 2, 즉 500원 2개 거슬러주고 1250%500 = 260원 남음 260/100 = 2, 즉 10..
2021.02.15 -
그리디 알고리즘(탐욕법) - 개요
그리디 알고리즘 그리디 알고리즘(탐욕법): 현재 상황에서 지금 당장 좋은 것만 고르는 방법 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. 그리디 해법은 그 정당성 분석이 중요하다 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토한다 5->7->9로 이동하면 합이 21로 가장 크다. 단순히 매 상황에서 가장 큰 값만 고른다면 어떻게 될까요? 5->7, 10, 8 중에서 가장 큰 값인 10을 고른다 -> 4,3 중에서 4를 고른다 이 경우 5->10->4 = 합 19라서 최적의 해가 아님 그리디 알고리즘은 이처럼 단순한 매 상황에서 가장 큰 값만 고르는 방식이라 할 수 있음 일반적인 상황에서 그리디 알고리즘은 최적의 해를 ..
2021.02.15