문제

 

풀이 코드

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 객체를 이용할수도 있었다

대박!

+ Recent posts