본문 바로가기
기초다지기/JS 코딩테스트

javaScript 주어질 월과 일에 해당하는 요일 구하기

by 김빵그 2023. 12. 28.

문제

1월 1일이 금요일일 때 a월 b일의 요일을 구하여라

풀이 

function solution(a, b) {
    const daysInMonth = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    const totalDays = daysInMonth.slice(0, a).reduce((acc, cur) => acc + cur, 0) + b - 1;
    const dayOfWeek = totalDays % 7;
    const days = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
    return days[dayOfWeek];
}
  • dayInMonth : 각 월의 일 수를 배열로 저장 
  • totalDays : 1월 1일이 금요일이므로 해당 날짜까지 총 일 수 계산 
    • slice 입력된 월 (a)까지의 일 수를 추출하고 reduce를 이용해 합산 
    • -1을 더하는 이유는 날짜를 0부터 시작하고 주어질 날짜에서 1을 빼서 총 일 수 계산
  • dayOfWeek : 7로 나누어 나머지를 구하여 요일 결정 
  • days : 요일에 해당하는 문자열 반환

다른 풀이

function getDayName(a, b) {
    var tempDate = new Date(2016, a - 1, b);

    return tempDate.toString().slice(0, 3).toUpperCase();
}
  • Date를 사용할 생각조차 못한.. 해답
  • Date 객체를 문자열로 변환 후 앞 3글자 추출하고 대문자로 변환하여 요일 얻기
function solution(a, b) {
    const monthDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    const weekDay = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];

    let days = b;
    for (let i = 0; i < a - 1; i++)
        days += monthDay[i];

    return weekDay[days % 7];
}
  •