그리디 알고리즘 예제 - 1

문제 분석

  • 전형적인 그리디 알고리즘 문제이다.

  • 그리디 알고리즘으로 풀 수 있도록 뒤의 동전 가격이 앞에 나오는 동전 가격의 배수가 된다는 조건을 부여했다.

  • 즉, 동전을 최소로 사용하여 K를 만들기 위해서는 가장 가격이 큰 동전부터 차례대로 사용하면 된다.

손으로 풀어보기

  1. 가격이 큰 동전부터 내림차순으로 K보다 가격이 작거나 같은 동전이 나올 때까지 탐색한다.

img.png
  1. 탐색을 멈춘 동전의 가격으로 K를 나눠 몫은 동전 개수에 더하고, 나머지로 K값을 갱신한다.

  2. 과정 1 ~ 2를 나머지가 0이 될 때까지 반복한다.

슈도코드

코드 구현 - 파이썬

그리디 알고리즘에서 자주 사용하는 자료구조 우선순위 큐

그리디 알고리즘은 현재 상황에서 최선의 선택을 반복하느 알고리즘이기 때문에 우선순위 큐를 사용하여 문제를 해결하는 경우가 흔하다. 파이썬에서는 우선순위 큐 자료구조를 두 가지 방법으로 제공한다.

  • PriorityQueue는 객체 자체를 우선순위 큐 형태로 만들어 사용하는 반면, heapq는 기본적인 list 객체를 대상으로 원소 삽입, 삭제 등의 제공 함수를 통해 우선순위 큐를 구현한다.

코드 구현 - 자바

Last updated