그리디 알고리즘(탐욕법, Greedy Algorithm)
매 선택에서 현재 상황에 지금 당장 좋은 것만을 선택하여 적합한 결과를 도출하는 알고리즘 설계 기법
이 방법은 선택하는 그 순간에는 최적인 방법이지만 최종적으로 보면 그 선택들이 최적이라는 보장은 없다.
그리디 알고리즘은 완전한 최적해를 보장하지는 않지만 그런대로 괜찮은 해답을 알려준다.
계산속도가 정확한 알고리즘에 비해서 빠른 경우가 많다. 따라서, 적당히 괜찮은 해답을 정해진 시간 내 찾을 때 적합한 알고리즘이다.
대표적인 그리디 알고리즘의 예 : 다익스트라 알고리즘(최단 경로 문제)
대표적인 그리디 알고리즘 문제 : 거스름 동전 개수 구하기
def greedy(money):
m = [500, 100, 50, 10]
cnt = 0
for i in m:
temp = divmod(money, i)
print(f'{i}원짜리 동전 : {temp[0]}개')
cnt += temp[0]
money = temp[1]
return cnt
print(f'최소한으로 거슬러주는 동전의 개수 : {greedy(3820)}개')
# 출력값
500원짜리 동전 : 7개
100원짜리 동전 : 3개
50원짜리 동전 : 0개
10원짜리 동전 : 2개
최소한으로 거슬러주는 동전의 개수 : 12개
[백준(Baekjoon] 11047 동전 0
문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프
young-library.tistory.com
'Study > Algorithm' 카테고리의 다른 글
[Algorithm] LCS (최장 공통 부분 수열, 최장 공통 부분 문자열) (0) | 2021.10.03 |
---|---|
[Algorithm] 점근 표기법, 빅오 표기법(big-O notation) (0) | 2021.08.30 |
[Algorithm] BFS, DFS (0) | 2021.08.01 |
[Algorithm/Python(파이썬)] 유클리드 호제법(Euclidean algorithm) (0) | 2021.07.01 |
[Algorithm/Python(파이썬)] 에라토스테네스의 체 (0) | 2021.06.18 |
댓글