#include "..\CookHeader.h"

int SIZE = 6;
Array <Array <string>> callQueue; // 큐를 2차원 배열로 지정
int front = 0, rear = 0;

bool isQueueFull() {
	if ((rear + 1) % SIZE == front)
		return true;
	else
		return false;
}

bool isQueueEmpty() {
	if (front == rear)
		return true;
	else
		return false;
}

void enQueue(Array <string> data) {
	if (isQueueFull()) {
		println("큐가 꽉 찼습니다.");
		return;
	}
	rear = (rear + 1) % SIZE;
	callQueue[rear] = data;
}

Array <string> deQueue() {
	if (isQueueEmpty()) {
		println("큐가 비었습니다.");
		return { "None", "0" };
	}
	front = (front + 1) % SIZE;
	Array <string> data = callQueue[front];
	callQueue[front] = { "None", "0" };
	return data;
}

Array <string> peek() {
	if (isQueueEmpty()) {
		println("큐가 비었습니다.");
		return { "None", "0" };
	}
	return callQueue[(front + 1) % SIZE];
}

int calcTime() {
	int timeSum = 0;
	for (int i = (front + 1) % SIZE; i < (rear + 1) % SIZE; i++)
		timeSum += stoi(callQueue[i][1]);
	return timeSum;
}

int main() {
	for (int i = 0; i < SIZE; i++)
		callQueue.push_back({ "None", "0" });

	Array <Array <string>> waitCall = { {"사용", "9"}, {"고장", "3"}, {"환불", "4"}, {"환불", "4"}, {"고장", "3"} };

	for (int i = 0; i < len(waitCall); i++) {
		Array <string> call = waitCall[i];
		int waitTime = calcTime();
		println("귀하의 대기 예상시간은 " + to_string(waitTime) + "분입니다.");
		print("현재 대기 콜 -->");
		printArray2(callQueue);
		print(endl);
		enQueue(call);
	}

	print("최종 대기 콜 -->");
	printArray2(callQueue);
	println("프로그램 종료!");
}