AP CSA 2023 Q1 - AppointmentBook Class
| <-- Back to AP CSA Exam Solutions | Next to Solution of Q2 (Sign) - FRQ - 2023 --> |
Solution of Q1 (AppointmentBook) - Free Response Question - 2023
The original question can be found at: https://apcentral.collegeboard.org/media/pdf/ap23-frq-comp-sci-a.pdf
Part (a)- public int findFreeBlock(int period, int duration)
public int findFreeBlock(int period, int duration)
{
int blockStart=-1;
int blockEnd = -1;
boolean available= true;
for (int i=0; (i< 60); i++)
{
blockStart = i;
blockEnd = blockStart + duration -1;
// expected duration is larger than available time in the period
if (blockEnd > 59) return -1;
available= true;
for (int j =i; (j<= blockEnd); j++)
{
if (!isMinuteFree(period,j)) available = false;
}
if (available) return blockStart;
}
return -1;
}
Part (b)- public boolean makeAppointment(int startPeriod, int endPeriod, int duration)
public boolean makeAppointment(int startPeriod, int endPeriod, int duration)
{
int blockStartMinute =0;
for (int i= startPeriod; i <= endPeriod; i++)
{
blockStartMinute = findFreeBlock(i, duration);
if (blockStartMinute != -1)
{ //reserve block
reserveBlock(i, blockStartMinute, duration);
return true;
}
}
return false;
}
Java project files (with Runner code):
| <-- Back to AP CSA Exam Solutions | Next to Solution of Q2 (Sign) - FRQ - 2023 --> |