티스토리 뷰
그리디 알고리즘(탐욕법)은 말 그대로,
지금 최선인 것 처럼 보이는 선택을 하여 문제를 해결하는 알고리즘이다.
욕심쟁이가 가장 최고인 방법을 고집하는 느낌이다.
그러나, 그리디 알고리즘은 항상 옳은 해답만 내놓지 않는다.
가장 흔한 예시인 동전 거슬러주기를 생각해보자.
500원 400원 100원 단위를 1500원을 거슬러주는 방법 중 가장 적은 동전을 사용하는 방법은 어떻게 코딩할까?
가장 큰 수인 500으로 나누고 나머지는 그 아래 400원, 100원짜리 순으로 나누면 최소의 동전으로 줄 수 있는 거스름돈이 나올 것이다.
하지만, 800원을 거슬러준다고 생각해보자.
공식대로라면, 500원짜리 하나, 100원짜리 3개로 총 4개의 동전을 거슬러 줄 것이다.
그러나, 400원짜리 2개를 주는 방법이 더 적다.
현재 최고인 것 처럼 보이는 가장 큰 수를 선택하는 방법이 결론은 적합하지 못한 결과를 일으킨다.
그렇기 때문에 그리디 알고리즘을 이용해 문제를 풀기 위해서는, 아래 두 가지 조건이 부합해야 한다.
1. 탐욕 선택 조건 (greedy choice property)
2. 최적 부분 구조 조건 (optimal substructure)
탐욕 선택 조건은 매번의 선택이 최선의 선택이어야 하는 것,
최적 부분 구조 조건은 그 부분의 최선의 선택이 어떠한 상황에서도 최선의 선택이어야 하는 것이다.
반응형
'Basic_Studies > 알고리즘 이론' 카테고리의 다른 글
[알고리즘] 선택정렬 (w/파이썬) (0) | 2021.07.29 |
---|---|
[알고리즘] 버블정렬(w/python) (0) | 2021.07.29 |
[자료구조] 해시 테이블(Hash Table)(w/파이썬) (0) | 2021.07.24 |
[자료구조] Linked-List(연결리스트) 기초 (python) (0) | 2021.07.14 |
[알고리즘] 언제 BFS를, DFS를 써야할까? (0) | 2020.11.13 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리액트 라우터
- 움직이는 글래스모피즘
- css 글래스모피즘
- NextJS
- 리액트
- next.js 리다이렉트
- 카페음료테스트
- 글래스모피즘 애니메이션 구현
- 글래스모피즘 구현
- 백준 10989 파이썬
- nextjs 스크롤
- 리액트 스크롤
- nuxt 공식문서 한글
- 파이썬 크롤링
- react router
- dvd 효과
- 파이썬 flask
- nuxt 공식문서
- getserversideprops redirect
- css marquee
- 파이썬 정렬
- 리액트 컴포넌트
- nextjs 파라미터 넘기기
- bs4 크롤링
- vscode venv
- 자바스크립트
- 화이팅
- 10989 파이썬
- Til
- 리액트 파라미터 넘기기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함