😎풀이

  1. 현재 일자를 연, 월, 일을 기준으로 나눈다.
  2. 현재 년도가 윤년인지 확인한다.
    2-1. 년도가 4로 나누어 떨어지면 윤년
    2-2. 다만, 100으로 나누어 떨어지면 윤년이 아님
    2-3. 하지만, 400으로 나누어 떨어지면 윤년
  3. 현재 년도의 월별 일자를 더함
  4. 현재 일자를 더함
  5. 계산된 최종 georian date 반환
function dayOfYear(date: string): number {
    const [year, month, day] = date.split('-').map(Number)
    const dayOfMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if(isLeapYear(year)) dayOfMonth[1] = 29
    let gregorian = 0
    for(let i = 0; i < month - 1; i++) gregorian += dayOfMonth[i]
    gregorian += day
    return gregorian
};

function isLeapYear(year: number): boolean {
    if(year % 4 !== 0) return false
    if(year % 100 === 0 && year % 400 !== 0) return false
    return true
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글