coding test
[C] 거스름돈 줄이기
잔망루피
2021. 2. 16. 18:20
일정 금액을 거슬러 줄 때, 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
반응형