
😎풀이
- 현재 일자를 연, 월, 일을 기준으로 나눈다.
- 현재 년도가 윤년인지 확인한다.
2-1. 년도가 4로 나누어 떨어지면 윤년
2-2. 다만, 100으로 나누어 떨어지면 윤년이 아님
2-3. 하지만, 400으로 나누어 떨어지면 윤년
- 현재 년도의 월별 일자를 더함
- 현재 일자를 더함
- 계산된 최종 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
}