const solution = (a, b) => {
const howManyDays = [31,29,31,30,31,30,31,31,30,31,30,31];
const daysOfweek = ['THU','FRI','SAT','SUN','MON','TUE','WED'];
const totalDays = howManyDays.slice(0, a-1).reduce((prev, curr) => prev+curr, 0) + b;
return daysOfweek[totalDays % 7];
}
howManyDays : 1월부터 12월까지 일수가 들어있는 배열
daysOfweek: 목, 금, 토, 일... 반환해야 하는 요일이 들어있는 배열.
단, 1번째 인덱스를 금요일로 뒀다. 그 이유는 총 일수를 7로 나누었을 때의 인덱스를 이용해서 곧바로 값을 반환하기 위해서이다.
예)
1월 8일일 때 1월부터 총 8일이므로, 8 & 7 === 1 즉, daysOfweek[1]은 금요일이다.
2월 26일 일 때 1월부터 총 32 + 26 = 58일 이므로, 58 % 7 === 2 즉, daysOfweek[2]은 토요일이다.
totalDays : 1월부터 현재 날짜까지의 총 일수이다.
이를 구하기 위해 howManyDays의 0부터 a-2인덱스까지를 뽑아내고 이를 모두 더한뒤 + b를 한 값이다.
예)
5월 8일 이라면 1,2,3,4월의 일수를 모두 더한뒤 8을 더해준 값이 총 수가 된다.
총 일수 % 7이 찾고자하는 daysOfweek의 인덱스 값이고, daysOfweek에서 이 인덱스에 해당하는 요일을 반환하면된다.