Greedy Algorithms(탐욕법, 탐욕 알고리즘)
: 문제 해결 과정에서 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행, 최종 해답에 도달하는 문제 해결 방식이다. 당장 눈앞에 보이는 최적의 상황만을 쫓는다.
문제를 풀며 이해해보자.
거스름돈(BOJ 5585번)
#include <iostream>
using namespace std;
int main()
{
int n; cin >> n; // 잔돈
n = 1000 - n;
int result = 0; //잔돈의 개수
result += n / 500; // 500원 개수
n %= 500;
result += n / 100;
n %= 100;
result += n / 50;
n %= 50;
result += n / 10;
n %= 10;
result += n / 5;
n %= 5;
result += n;
cout << result << endl;
return 0;
}
이렇게 result와 n을 계속 변화시키며 상황에 맞게 잔돈의 개수를 더하면 된다!
이렇게, 매 순간에 대해 최적인 선택을 하면서 result 값을 구해주는 것이다.
'Algorithm' 카테고리의 다른 글
[C++] BFS와 DFS 개념 정리 (0) | 2022.03.14 |
---|---|
[C++] 구글폼 복수응답 날짜 별로 응답자 정리하는 프로그램 (0) | 2022.03.13 |
그리디 알고리즘(Greedy Algorithm)의 개념, 예제 코드 (0) | 2022.03.06 |
[BOJ] 2217로프 : 그리디 알고리즘 C++ 문제 해결 및 코드 (0) | 2021.03.04 |
그래프 알고리즘 (Graph Algorithm) 기초 (0) | 2021.02.07 |