본문 바로가기

컴퓨터 공학 일지/알고리즘

그리디 알고리즘 - 거스름돈 계산하기 - C++

#include <iostream> 

void Result(int a) {


	int temp = a;
	int arrayCoinResult[5] = { 0, 0, 0, 0, 0 };
	int CoinSum = 0;
	int array[5] = { 500,100,50,10,1 };



	for (int i = 0; i < sizeof(array)/sizeof(int); i++){

		while (temp >= array[i]) {
			temp = temp - array[i];
			arrayCoinResult[i] ++;
			CoinSum++;
		}

	}
	std::cout << "거스름돈의 갯수" << CoinSum << std::endl;
	std::cout << "500원 거스름돈의 갯수" << arrayCoinResult[0] << std::endl;
	std::cout << "100원 거스름돈의 갯수" << arrayCoinResult[1] << std::endl;
	std::cout << "50원 거스름돈의 갯수" << arrayCoinResult[2] << std::endl;
	std::cout << "10원 거스름돈의 갯수" << arrayCoinResult[3] << std::endl;
	std::cout << "1원 거스름돈의 갯수" << arrayCoinResult[4] << std::endl;


}

int main(void) 
{
	std::cout << "구매한 물건의 가격 : ";
	
	int value;

	std::cin >> value;

		Result(value);

	

	return 0;
}

 

 

temp = 입력된 값을 Result 함수에 전달받아 저장해주는 변수 / 큰 값부터 - 되어 다음 크기의 거스름돈으로 계산해야하는 임시 값을 저장하는 두 가지의 역할을 가진 변수

arrayCoinResult[] = 각각의 거스름돈의 크기를 저장하기 위한 배열

CoinSum = 거스름돈 전체 갯수를 저장하기 위한 변수

array[] = 계산해야할 각각의 코인 전체 크기

 

for문으로 계산해야하는 제일 큰 크기의 거스름돈 갯수부터 입력

예 ) 0번째 500 , 1번째 100 .... 5번째 1

for문 내부의 while 문을 이용하여 (현재금액 - 거스름돈크기) 의 값이 양수 일 때 까지 

계속해서 temp의 값에서 거스름돈 크기만큼 빼주며 한번의 루틴이 돌때마다 거스름돈의 크기와 현재 계산중인 거스름돈의 크기를 증가시켜줌

 

for문이 종단되면 계산 완료된 모든 값을 출력해줌

'컴퓨터 공학 일지 > 알고리즘' 카테고리의 다른 글

성적 분류 [C++]  (0) 2019.12.08
구구단 출력하기 [C++]  (0) 2019.12.08