10. 탐욕 알고리즘

2024. 10. 23. 16:24파이썬(python)의 알고리즘

#1. 탐욕 알고리즘
* 최적의 해에 가까운 값을 구하기 위해 사용
* 그사치 추정에 활용
* 반드시 최적의 해를 구할 수 있는 것은 아님
* 여러 경우 중 하나를 결정해야 할때 마다 매 순간 최적이라고 생각되는 경우를 선택하는 방식

#2. 탐욕 알고리즘의 예
지불해야 할 값이 4720원일 때 1원, 50원, 100원, 500원 동전으로 동전의 수가 가장 작게 지불하는 방법
* 가장 큰 동전부터 최대한 지불해야하는 값을 채우는 방식으로 구현
* 매 순간 최적이라고 생각되는 경우를 선택하면 됨

coin_list = [1, 100, 50, 500]
print(coin_list)
coin_list.sort(reverse=True)
print(coin_list)
-->
[1, 100, 50, 500]
[500, 100, 50, 1]

#모범 답안
coin_list = [1, 100, 50, 500]

def min_coin_count(value, coin_list):
  total_coin_count = 0
  details = list()
  coin_list.sort(reverse=True)
  for coin in coin_list:
    coin_num = value // coin
    total_coin_count += coin_num
    value -= coin_num * coin
    details.append([coin, coin_num])
  return total_coin_count, details

min_coin_count(4720, coin_list)
-->

(31, [[500, 9], [100, 2], [50, 0], [1, 20]])


### 발표 과제
* 최단 경로 알고리즘(다익스트라 알고리즘) #개념 예제로 발표
* 최소 신장 트리
* 백 트래킹
728x90
LIST

'파이썬(python)의 알고리즘' 카테고리의 다른 글

9. 너비우선 탐색  (0) 2024.10.23
8. 그래프(Graph)  (2) 2024.10.23
7. 순차 탐색과 이진탐색  (0) 2024.10.23
7. 순차 탐색과 이진탐색  (1) 2024.10.23
6. 병합정렬(Merge sort)  (0) 2024.10.23