[매일코딩-프로그래머스] 2016년 03

2021. 11. 24. 10:41WEB Dev/CordingTEST

728x90

 

 

손코딩은 시간이 모자라서 제대로 못해봤는데, 이 분이 문제에 있는 '함수, solution' 을 무시하고 다른 함수 이름을 넣어서 테스트가 안된 것 같다. 

마지막 함수를 최종 실행되는 함수인 ResultFuc를 solution으로 바꾸고, 인자로 아무것도 들어가지 않고 있어서

a, b 인자를 넣어주었다. month=a, day=b도 불필요해 보여서 a, b로 수정했다. 

위의 getDayName 함수는 전달한 a, b를 month, day라는 변수 이름으로 잘 받고 있어서 별도로 a,b로 바꾸지 않아도 된다. 바꾸면 여러모로 좋지 않을까 성능이라던지?

 

수정한 최종 코드는 이것이다.

 

const getDayName = (month,day) => {
    
    //month는 주어지는 변수 a 고 day는 주어지는 변수 b이니까 a, b로 변환해도 될듯
    //month, day가 읽는 사람 입장에서는 더 편해요.
    const month_31 = [1,3,5,7,8,10,12];
    const month_30 = [4,6,9,11];
    const day_all = [31,29,31,30,31,30,31,31,30,31,30,31];
    let day_plus = null;

    const sum = (month, day_plus, day_all) => {
        for(let i=0; i < month-1; i++){
             day_plus += day_all[i]
        }
        return day_plus += day;
    }

    if(month === 1 && day <= 31){
        return day_plus = day;
    }
    else if(month === 2 && day <= 29 || month === 3 && day <= 31){
        return sum(month, day_plus, day_all);
    }
    else if(month_31.indexOf(month-1) > -1 && day <= 30 && month !== 13){
        return sum(month, day_plus, day_all);
    }
    else if(month_30.indexOf(month-1) > -1 && day <= 31 ){
        return sum(month, day_plus, day_all);
    }else{
        null;
    }

    return day_plus;
}

const solution = (a, b) => {
    const DayOfTheWeek = ['THU','FRI','SAT','SUN','MON','TUE','WED'];
    let result = null;
    let ResultDay = getDayName(a, b);

    if(ResultDay !== null){
        for(let i = 0; i < 7; i++){
        if(ResultDay % 7 === i){
           return result = DayOfTheWeek[i];
            }
        }
    }else{
        null;
    }

    return result;
}

 

728x90