Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 앞으로 n년간의 윤년 찾기

이번 글에서는 양의 정수 n을 입력받아 앞으로 다가올 윤년 n개를 배열로 반환하는 함수를 작성해 보겠습니다. 이 문제는 크게 세 단계로 나누어 해결할 수 있습니다.

1단계: JavaScript로 현재 연도 구하기

먼저 Date 객체의 새 인스턴스를 생성하여 현재 연도를 구합니다.

// Date 객체의 새 인스턴스에서 현재 연도 가져오기
const year = new Date().getFullYear();

2단계: 윤년 여부 확인하기

다음으로 숫자를 입력받아 해당 연도가 윤년인지 아닌지에 따라 불리언 값을 반환하는 isLeap() 함수를 작성합니다.

윤년은 다음 두 조건 중 하나 이상을 만족하는 해입니다.

  • 400의 배수인 경우
  • 4의 배수이면서 100의 배수는 아닌 경우

이 조건들을 바탕으로 isLeap() 함수를 작성하면 다음과 같습니다.

// 윤년 여부를 확인하는 함수
const isLeap = year => {
    return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
};

3단계: 앞으로 올 윤년 n개 찾기

이제 현재 연도부터 시작해 윤년을 순차적으로 검사하고, 원하는 개수만큼 배열에 담는 nextNLeap() 함수를 완성할 수 있습니다.

예제 코드

// 윤년 여부를 확인하는 함수
const isLeap = year => {
    return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
};
const nextNLeap = n => {
    const arr = [];
    let year = new Date().getFullYear()+1;
    while(arr.length < n){
        if(isLeap(year++)){
            arr.push(year-1);
        };
    };
    return arr;
};
console.log(nextNLeap(5));
console.log(nextNLeap(25));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[ 2024, 2028, 2032, 2036, 2040 ]
[
    2024, 2028, 2032, 2036, 2040,
    2044, 2048, 2052, 2056, 2060,
    2064, 2068, 2072, 2076, 2080,
    2084, 2088, 2092, 2096, 2104,
    2108, 2112, 2116, 2120, 2124
]

출력 결과에서 흥미로운 점은 2096년 다음 윤년이 2104년이라는 것입니다. 2100년은 4의 배수이지만 100의 배수이면서 400의 배수가 아니므로 윤년에서 제외됩니다.这正是 isLeap() 함수의 두 가지 조건이 정확하게 작동하는 결과입니다.