# APCalendar free response answer 2019

`APCalendar` is #1 from the from the 2019 AP Computer Science A Free Response problems.

https://apcentral.collegeboard.org/pdf/ap19-frq-computer-science-a.pdf?course=ap-computer-science-a

## Part (a) `numberOfLeapYears` method

``````public static int numberOfLeapYears(int year1, int year2)
{
int leapYears = 0;

for(int y = year1; y <= year2; y++)
if(isLeapYear(y))
leapYears++;

return leapYears;
}
``````

## Part (b) `dayOfWeek` method (original solution)

``````public static int dayOfWeek(int month, int day, int year)
{
int weekday = firstDayOfYear(year);
int additionalDays = dayOfYear(month, day, year) - 1;

for(int d = 1; d <= additionalDays; d++)
{
weekday++;

if(weekday == 7)
weekday = 0;
}

return weekday;
}
``````

## Part (b) `dayOfWeek` method (considered solution)

``````public static int dayOfWeek(int month, int day, int year)
{
int additionalDays = dayOfYear(month, day, year) - 1;
return (firstDayOfYear(year) + additionalDays) % 7;
}
``````

I didn’t see this solution when I first approached the problem. When I looked at my original solution a half hour later, I realized that it could obviously be simplified to this.

I’ve received a number of questions about whether alternate solutions to `dayOfWeek` work. Please find my JUnit 5 test below. See Running JUnit 5 tests. Replace my code for the method with yours.