Drill

ProblemsGo › dates

Count the working days in a span

mediumdatesMathGo

An SLA clock only runs on working days, so a span of calendar days has to be reduced to the ones that count.

businessDays(startWeekday: int, spanDays: int) → int

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func businessDays(startWeekday int, spanDays int) int {
	
}

Worked examples

CallResult
businessDays(0, 7)5
businessDays(0, 5)5
businessDays(5, 2)0
businessDays(4, 4)2

Hint

Walk the days and take the weekday modulo 7, or work out the whole weeks first and handle the remainder.

Reference solution in Go
func businessDays(startWeekday int, spanDays int) int {
	if spanDays <= 0 || startWeekday < 0 || startWeekday > 6 {
		return 0
	}
	n := 0
	for i := 0; i < spanDays; i++ {
		if (startWeekday+i)%7 < 5 {
			n++
		}
	}
	return n
}

The same problem in another language

More dates problems in Go