문제
풀이 코드
function solution(a, b) {
const monthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const weekDay = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
let days = 0;
for (let i = 0; i < a - 1; i++)
days += monthDays[i];
days += b;
const checkDay = days % 7 - 1
return weekDay[checkDay < 0 ? 6 : checkDay];
}
풀이 과정
우선, 각 달마다 일수를 monthDays 배열에 담아 주었다,
그리고 요일의 정보를 weekDay 배열에 담아 주었다.
문제가 1월 1일부터 시작이니, days 변수에
입력된 월과 일을 계산하여, 해당 일자 까지의 총 일수를 더해주었고,
해당 일수를 7로 나누었을때 나머지값에 해당하는 부분이 해당 요일이 되기 때문에
index 접근을 위해 - 1을 해주었다.
지금 이 글을 적으면서 생각한건데, 요일 정보의 배열을 THU 부터 시작하면 굳이 -1 을 하지 않아도 됐을거같다.
그러면 마지막에 인덱스 범위 넘어갔을때 처리하는 로직을 굳이 하지 않아도 됐는데,
문제를 풀고나서 한번더 코드를 보며 생각을 해봐야 할것 같다!
다른사람의 풀이
function getDayName(a,b){
var date = new Date(2016, (a - 1), b);
return date.toString().slice(0, 3).toUpperCase();
}
date 객체를 이용할수도 있었다
대박!