#include "..\CookHeader.h"

Array <string> dataAry = { "바나나맛우유", "레쓰비캔커피", "츄파춥스", "도시락", "삼다수", "코카콜라", "삼각김밥" };

int binSearch(Array <string> ary, string fData) {
	int pos = -1;
	int start = 0;
	int end = len(ary) - 1;

	while (start <= end) {
		int mid = (start + end) / 2;
		if (fData == ary[mid])
			return mid;
		else if (fData > ary[mid])
			start = mid + 1;
		else
			end = end - 1;
	}
	return pos;
}

int main() {
	Array <string> sellAry;			// 무작위로 판매된 제품 배열
	Array <string> sellProduct;		// 중복이 제거된 제품 배열

	randomInit(0, len(dataAry)-1);	// dataAry의 인덱스 번호로 초기화
	for (int i = 0; i < 20; i++) {
		int num = cookRandom(gen);	// dataAry 중에서 하나 추출
		sellAry.push_back(dataAry[num]);
	}
	print("#오늘 판매된 전체 물건(중복O, 정렬X) -->");
	printArray(sellAry);
	println("");
	sortArray(sellAry);					// 정렬
	print("#오늘 판매된 전체 물건(중복O, 정렬O) -->");
	printArray(sellAry);
	println("");
	copyArray(sellAry, sellProduct);	// 복사
	setArray(sellProduct);				// 중복 제거
	print("#오늘 판매된 전체 물품 종류(중복X) -->");
	printArray(sellProduct);
	println("");

	Array <Array <string>> countAry;	// { {물품, 갯수}, {물품, 갯수} .... }
	for (int i = 0; i < len(sellProduct); i++) {
		string product = sellProduct[i];
		int count = 0;
		int pos = 0;
		while (pos != -1) {
			pos = binSearch(sellAry, product);
			if (pos != -1) {
				count++;
				del(sellAry, pos);
			}			
		}
		countAry.push_back({ product, to_string(count) });
	}

	print("결산 결과 ==>");
	printArray2(countAry);
}