Fácil 0 resueltos 0% de aceptación

Days in a Month

Return how many days a month has, including leap years.

Lo que aprenderás

  • Asociar meses con su número de días
  • Reutilizar una regla de año bisiesto
  • Dividir la lógica en funciones pequeñas

Problema

Return the number of days in month of year in the Gregorian calendar. February has 29 days in a leap year: years divisible by 4, except those divisible by 100 unless also divisible by 400. A helper function is_leap(year) keeps the code tidy.

Implement days_in_month(year, month).

Input

year: The year. month: The month, 1 (January) to 12 (December).

Output

Return the number of days.

Restricciones

1 ≤ year ≤ 9,999; 1 ≤ month ≤ 12

Ejemplos

Ejemplo 1
Entrada:
year = 2024
month = 2

Salida esperada:
expected = 29
Entrada:
long long year = 2024;
long long month = 2;

Salida esperada:
long long expected = 29;
Entrada:
long year = 2024;
long month = 2;

Salida esperada:
long expected = 29;

Explicación

2024 is divisible by 4 and not by 100, so it is a leap year: 29 days.

Ejemplo 2
Entrada:
year = 1900
month = 2

Salida esperada:
expected = 28
Entrada:
long long year = 1900;
long long month = 2;

Salida esperada:
long long expected = 28;
Entrada:
long year = 1900;
long month = 2;

Salida esperada:
long expected = 28;

Explicación

1900 is divisible by 100 but not 400, so it is not a leap year: 28 days.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

La mayoría de los meses tienen una cantidad fija de días; febrero depende de si el año es bisiesto.

Pista 2

Usa una tabla pequeña con los días por mes y luego ajusta febrero con la regla de año bisiesto.

Pista 3

Ten cuidado con los años de siglo: ser divisible entre 100 no basta; también debe ser divisible entre 400.

Complejidad esperada

tiempo O(1), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.