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 

 

반응형

'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