Teaching Kids Programming – Day of the Year (Leap Year Algorithm)


Teaching Kids Programming: Videos on Data Structures and Algorithms

Given a string date representing a Gregorian calendar date formatted as YYYY-MM-DD, return the day number of the year.

Example 1:
Input: date = “2019-01-09”
Output: 9
Explanation: Given date is the 9th day of the year in 2019.

Example 2:
Input: date = “2019-02-10”
Output: 41

Example 3:
Input: date = “2003-03-01”
Output: 60

Example 4:
Input: date = “2004-03-01”
Output: 61

Constraints:
date.length == 10
date[4] == date[7] == ‘-‘, and all other date[i]’s are digits
date represents a calendar date between Jan 1st, 1900 and Dec 31, 2019.

Day of the Year (Leap Year Algorithm)

We sum up all the complete month-days and add the days of the month. If it is a leap year – we need to add 29 days to Feb.

1
2
3
4
5
6
7
8
class Solution:
    def dayOfYear(self, date: str) -> int:
        days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        isLeap = lambda year: year % 400 == 0 or (year % 100 != 0 and year % 4 == 0)
        year, month, day = list(map(int, date.split('-')))
        if isLeap(year):
            days[1] += 1
        return sum(days[:month - 1]) + day
class Solution:
    def dayOfYear(self, date: str) -> int:
        days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        isLeap = lambda year: year % 400 == 0 or (year % 100 != 0 and year % 4 == 0)
        year, month, day = list(map(int, date.split('-')))
        if isLeap(year):
            days[1] += 1
        return sum(days[:month - 1]) + day

Time and Space complexity is O(1) constant, obviously with regarding to the input date string.

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
loading...
305 words
Last Post: Teaching Kids Programming - Multiple Strange Coin Flips/Toss Bottom Up Dynamic Programming Algorithm (Knapsack Variant)
Next Post: Teaching Kids Programming - Compute Minimum Absolute Difference of Two Numbers in an Array

The Permanent URL is: Teaching Kids Programming – Day of the Year (Leap Year Algorithm)

Leave a Reply