출처 : 반크 카드뉴스
문제]
1원, 5원, 10원, 50원, 100원, 500원 짜리 동전을 충분히 갖고 있는 상점이 있다. 고객이 1000원 미만의 물건을 사고 1000원 짜리 돈을 냈을 때 거스름돈을 동전의 개수가 최소가 되도록 계산하는 C# 프로그램을 작성하시오.
참고풀이]
using System;
using System.Collections.Generic;
using System.Text;
namespace Chapter3
{
class P150_3_9_10
{
public static void Main(string[] args)
{
int[] don = { 500, 100, 50, 10, 5, 1 };//동전금액
int[] change = new int[6];//동전금액의 개수를 넣을 변수
int pay = 1000;//지불한 금액변수
int price;//제품가격변수
int sum;//동전개수의 합
int i;//반복변수
while(true)
{
Console.Write("물건의 가격을 입력하시오 : ");
price = Int32.Parse(Console.ReadLine());
if (price >= 1 && price < 1000) break;
Console.WriteLine("물건의 가격은 1000을 넘을 수 없습니다.");
return;
}
//거스름돈의 최소 동전 수를 구한다.
pay -= price;
sum = 0;
for (i=0;i<6;i++)
{
change[i] = pay / don[i];
sum += change[i];
pay %= don[i];
if (pay == 0) break;
}
//결과출력
for (i = 0; i < 6; i++)
Console.WriteLine("{0,23}원 : {1}개", don[i], change[i]);
Console.WriteLine("거스름돈의 최저 동전 개수 : {0}개", sum);
}
}
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
댓글