숫자 n을 유일한 인수로 받는 자바스크립트 함수를 작성해 보겠습니다.
이 함수는 먼저 자바스크립트의 Date 객체를 사용해 오늘의 요일을 확인한 뒤, 오늘부터 n일 후가 무슨 요일인지 계산하여 반환해야 합니다.
동작 예시
예를 들어, 오늘이 월요일이고 n = 2라면 결과는 다음과 같습니다.
Wednesday
예제 코드
다음은 이를 구현한 코드입니다.
const num = 15;
const findNthDay = num => {
const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const day = new Date().getDay();
const daysFromNow = num % 7;
return weekday[(day + daysFromNow) % 7];
};
console.log(findNthDay(num));코드 설명
new Date().getDay()는 오늘의 요일을 나타내는 숫자를 반환합니다. 일요일은 0, 월요일은 1, … 토요일은 6에 해당합니다. 여기에 n을 7로 나눈 나머지를 더한 뒤 다시 7로 나누면, 목표 날짜의 요일 인덱스를 얻을 수 있습니다. 배열에는 각 인덱스에 맞는 요일 이름이 저장되어 있으므로, 해당 값을 그대로 반환하면 됩니다.
n을 7로 나눈 나머지(num % 7)를 사용하는 이유는 일주일이 7일로 순환하기 때문입니다. 예를 들어 15일 뒤와 1일 뒤의 요일은 항상 같습니다.
출력
콘솔에 출력되는 결과는 다음과 같습니다.
Friday
대안: toLocaleDateString 활용하기
배열 없이 더 간결하게 처리하고 싶다면 Date 객체의 setDate()와 toLocaleDateString() 메서드를 조합할 수도 있습니다.
const findNthDay = num => {
const d = new Date();
d.setDate(d.getDate() + num);
return d.toLocaleDateString("en-US", { weekday: "long" });
};
console.log(findNthDay(15));이 방식은 실제 날짜 연산을 수행하므로 월이나 연도가 바뀌는 경우에도 정확하게 동작하며, 로케일 옵션을 변경하면 한국어 요일(예: "금요일")로도 손쉽게 출력할 수 있습니다.