Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그리디
- 인프콘2024
- database
- 마크다운
- 코딩문제
- db
- 코테
- 데이터
- NoSQL
- 기초
- 마크다운문법
- Python
- Algorithm
- chatGPT
- 수열
- 알고리즘
- 데이터베이스
- 수학
- 백준
- 알고리즘기초
- Markdown
- mongoDB
- 탐색알고리즘
- 코딩테스트
- 파이썬
- 그리디알고리즘
- 그래프
- httpCode
- 몽고DB
- 소수
Archives
- Today
- Total
Dev_from the Bottom
#48. Algorithm38_python) 그리디 개념 및 예제 본문
그리디 : 당장 좋은 것만 선택하는 알고리즘
- 어떤 문제가 있을 때 단순하고 '탐욕적으로 문제를 푸는' 알고리즘
- 탐욕적 : 현재 상황에서 가장 좋은 것만 고르는 방법
- 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않음
- 매우 다양한 유형이 있기 때문에 안기한다고 잘 풀 수 있는 유형이 아님
- 많이 접해보고 문제를 풀어보며 훈련을 해야 함
- 창의력, 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함
예제
- 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때, 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈은 항상 10의 배수이다.
Step1) 테스트
n = 1260
count = 0
# 잔돈 종류 리스트
coin_types = [500, 100, 50, 10]
for coin in coin_types:
count = count + n // coin # 몫
print(count)
n %= coin # 나머지
print(n)
print()
print(count)
>>>
2
260
4
60
5
10
6
0
6
Step1) 테스트 : 성공
n = int(input("거스름 돈 : "))
count = 0
# 잔돈 종류 리스트
coin_types = [500, 100, 50, 10]
# 잔돈 큰 단위부터 차례로 확인
for coin in coin_types:
count += n // coin # 몫 : 큰 단위부터 동전 갯수
n %= coin # 나머지 : 큰 단위 동전으로 지불한 나머지 금액
print(count)
>>>
거스름 돈 : 1260
6
예제
- 그리디 알고리즘을 모든 알고리즘 문제에 적용할 수 있는 건 아님
- 대부분의 문제는 그리디 알고리즘을 이용했을 때 '최적의 해'를 찾을 수 없을 가능성이 다분함
- 그리디 알고리즘으로 문제의 해법을 찾았을 때에는 그 해법이 정당한지 검토 필요
- 대부분의 그리디 알고리즘 문제에서는 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 함
<참조>
- 이것이 취업을 위한 코딩 테스트다 with 파이썬(나동빈, 한빛미디어)
'Algorithm_study' 카테고리의 다른 글
#50. Algorithm50_python) 그리디 문제2_숫자 카드 게임 (0) | 2022.06.23 |
---|---|
#49. Algorithm49_python) 그리디 문제1_큰 수의 법칙 (0) | 2022.06.21 |
#46. Algorithm36_python) 피보나치 수5_백준 10870 (0) | 2022.06.15 |
#45. Algorithm35_python) BFS(너비 우선 탐색) : Breadth-First-Search (0) | 2022.06.15 |
#44. Algorithm34_python) DFS(깊이 우선 탐색) : Depth-First-Search (0) | 2022.06.14 |
Comments