그리디 알고리즘

김수연·2022년 5월 8일
0

알고리즘

목록 보기
1/1

탐욕 알고리즘이라고도 불리는 그리디 알고리즘
지금 당장 처해진 상황에서 최적의 답을 선택하는 알고리즘 설계기법입니다.

하지만, 단순히 가장 좋아보이는 것을 선택했지만, 그게 나중에 최적의 해가 되지는 않을 수 있습니다.

그리디 알고리즘을 적용하려면 두가지 조건이 있습니다.

1. 최적 부분 구조

문제에 대한 최적의 해가 부분 문제에 대해서도 최적의 해여야합니다.

2. 탐욕스러운 선택조건

앞의 선택이 이후 선택에 영향을 주지 않아야 합니다.


문제
당신은 음식점 계산을 도와주는 점원입니다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정합니다. 손님에게 거슬러 주어야할 돈이 N원이라고 할때 거슬러 주어야하는 동전의 최소 개수를 구하세요 (단, 거슬러 줘야할 돈은 항상 10의 배수입니다)

만약, N이 1260원일 때, 다양하게 거슬러줄 수 있지만
최소개수로 거슬러주는 방법은 500원부터 거스름돈을 채워나가는 방법일 것이다.
그래서 500원으로 거슬러주고 남는 돈을 100원 그리고 50원 10원 순으로 하면 최적의 방법이 될 수 있다.

public static void main(String args[]) {
		int sum = 1260;
		int a[] = {500,100,50,10};
		int count = 0;

		for(int i=0; i < a.length ; i++){
			count += sum / a[i];
			sum = sum % a[i];
		}
		System.out.print(count);
	}
profile
백엔드 개발자 (ง •̀ω•́)ง✧

0개의 댓글