일정 금액을 거슬러 줄 때, 10원, 50원, 100원, 250원, 500원이 있다고 가정하고 거스름 돈의 개수를 최소한으로 하는 방법을 찾자.
#include<stdio.h>
#define LEN 5
int coins[] = { 500, 250, 100, 50, 10 }; // 동전 종류
int count[LEN]; // 동전 갯수
int money;
int i = 0;
int main() {
scanf_s("%d", &money);
while (money != 0) {
if (money < 0) { // 거스름돈을 많이 준 경우
count[i]--;
money += coins[i++];
}
else { // 거스름 돈을 더 주어야 하는 경우
count[i]++;
money -= coins[i];
}
}
for (i = 0; i < LEN; i++) {
printf("%d : %d\n", coins[i], count[i]);
}
}
금액이 큰 동전을 우선으로 준다.
money가 음수가 되면 동전 갯수를 줄이고 그 다음 동전으로 넘어간다.
money가 0이 되면 거스름돈을 제대로 줄 수 있다.
참고 SW expert academy
반응형
'coding test' 카테고리의 다른 글
[파이썬, C] 절대값의 합 구하기 (0) | 2021.02.23 |
---|---|
[C] Baby-Gin Game (0) | 2021.02.16 |
[파이썬] Gravity (0) | 2021.02.10 |
[파이썬] 5178. 노드의 합 (0) | 2021.02.08 |
[파이썬] 5176. 이진탐색 (0) | 2021.02.05 |