2016년
https://programmers.co.kr/learn/courses/30/lessons/12901
1월부터 주어진 월 전까지 해당 월의 일수를 모두 더하고 거기에 주어진 일수를 더해서 -1(1월 1일을 기준으로 7로 나눈 나머지에 따라 요일을 결정하기 때문에 하루를 빼주어야 한다.) 한것에서 7을 나눈 나머지가 0이면 금요일, 1이면 토요일 .. 이런식으로 접근하였다.
function solution(a, b) {
let dayObject = {
2: "SUN",
3: "MON",
4: "TUE",
5: "WED",
6: "THU",
0: "FRI",
1: "SAT",
}; // 마지막에 나머지값에 대응하는 요일을 리턴하기위해 날짜 객체를 {나머지(key) : 요일(value)} 선언해줌
let sum = 0;
for (let m = 1; m < a; m++) { // 1월부터 a월 전까지 반복
if (m === 2) sum += 29; // 윤년이라 2월 29일까지이다.
else if (m === 4 ||m === 6 || m === 9 || m === 11) sum += 30; // 30일까지 있는 달
else sum += 31; // 나머지는 31일까지
}
return dayObject[(sum + (b - 1)) % 7];
}
첨엔 매달 마지막날의 요일을 다 구해서 다음달의 1일의 요일을 구하는 과정을 계속 반복해야 하는 방법이 떠올랐는데 구현을 어떻게 해야할 지 몰랐다.
근데 그냥 일수를 다 더해주면 되는거였는데 너무 어렵게 생각했던 것 같다.ㅎㅎ