From f4878dc64b8986fb9f1b4261b83562b7ab47f019 Mon Sep 17 00:00:00 2001 From: KimTaeO Date: Tue, 24 Oct 2023 11:11:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=ED=83=90=EC=9A=95=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...14\352\263\240\353\246\254\354\246\230.md" | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 "\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" diff --git "a/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" "b/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" new file mode 100644 index 0000000..395953f --- /dev/null +++ "b/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" @@ -0,0 +1,53 @@ +# 탐욕 알고리즘 +현재 상황에서 가장 최선의 선택을 고르는 알고리즘이다. 탐욕 알고리즘은 동적 프로그래밍을 간단한 문제 해결에 사용하면 지나치게 많은 일은 한다는 것에서 착안하여 고안된 알고리즘이다. + +## 탐욕 알고리즘의 조건 +* 탐욕적인 선택은 항상 안전하다는 것이 보장되어야 한다. +> ```안전하다``` 라는 것은 이 선택으로 인해 전체 문제의 최적해를 도출할 수 있어야 한다는 것이다. + +* 문제의 여러 단계에서 전부 최적해가 도출되어야 한다. + +## 탐욕 알고리즘의 단계 +1. 문제의 최적해 구조를 결정 + +2. 문제의 구조에 맞게 선택 절차를 정의 + +3. 선택 절차에 따라 선택을 수행 + +4. 선택된 해가 문제의 조건을 만족하는지 검사 + +5. 조건을 만족하지 않으면 해당 해를 제외 + +6. 모든 선택이 완료되면 해답 검사 + +7. 조건을 만족하지 않으면 해답으로 인정되지 않음 + +## 탐욕 알고리즘 예시 + +거스름돈 계산 알고리즘 + +```Kotlin +fun main() = with(System.`in`.bufferedReader()) { + var money = readLine().toInt // 거스름돈 + + // 1. 선택 절차 적용 + val coins = [500, 100, 50, 10] + + var count = 0 + val map = HashMap() + + // 2. 적절성 검사 + for (i in coins) { + count += money / i + money %= i + map.put(i, money / i) + } + + // 3. 해답 검사 + if(money == 0) + for(i in map) { + println("${i.first} : ${i.second}") + } +} + +``` \ No newline at end of file From 619c1543d2903ec993a227960c1655d9569a922c Mon Sep 17 00:00:00 2001 From: KimTaeO Date: Tue, 24 Oct 2023 11:12:02 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A0=80=EC=9E=A5=20?= =?UTF-8?q?=EA=B9=8C=EB=A8=B9=EC=9D=80=20=EC=BB=A4=EB=B0=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" "b/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" index 395953f..9de9981 100644 --- "a/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" +++ "b/\354\225\214\352\263\240\353\246\254\354\246\230/\355\203\220\354\232\225\354\225\214\352\263\240\353\246\254\354\246\230.md" @@ -38,7 +38,7 @@ fun main() = with(System.`in`.bufferedReader()) { // 2. 적절성 검사 for (i in coins) { - count += money / i + count += money / i money %= i map.put(i, money / i) }