그리디 알고리즘(Greedy Algorithm): 하나를 결정하는 그 순간에 최적이라고 생각하는 것을 선택해서, 최적해를 구하는 알고리즘이다.
500, 100, 50, 10, 5, 1에서 하나씩 결정할 때, 그 순간에 가장 많은 개수를 가질 수 있는 것을 택해서 카운팅에 더한다.
입력: 물건의 가격
출력: 잔돈에 포함된 매수 (총 몇 개의 지폐 또는 동전이 있는지)
#include <iostream>
using namespace std;
int main()
{
int price,i=0, count=0;
int small_change[] = {500, 100, 50, 10, 5, 1};
cin >> price;
int change = 1000 - price;
while(i<6){
if(change >= small_change[i]){
count += change / small_change[i];
}
change %= small_change[i++];
}
cout << count << endl;
}
배열에 500, 100, 50, 10, 5, 1 값의 잔돈을 넣어놓는다.
change는 거스름돈에 해당한다. change가 잔돈 이상이어야 하므로 count에 추가하는 조건을 준다.
[백준(BOJ)] 3273번: 두 수의 합 (Two Pointers Algorithm, C++) (0) | 2021.01.22 |
---|---|
[백준(BOJ)] 2606번: 바이러스 (DFS/BFS, C++) (0) | 2021.01.21 |
[HackerRank] Alternating Characters (String Manipulation) (C++, Python) (0) | 2021.01.17 |
[HackerRank] Strings: Making Anagrams (String Manipulation) (C++) (0) | 2021.01.17 |
[HackerRank] Mark and Toys (sorting) (python, C++) (0) | 2021.01.16 |