kakasoo

[node.js] 2016년 ( 프로그래머스 레벨1 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 2016년 ( 프로그래머스 레벨1 )

카카수(kakasoo) 2021. 6. 25. 17:05
반응형
// 프로그래머스 level1 2016년 문제를 풀었습니다.

function getDays(month) {
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 2:
            return 29;
        default:
            return 30;       
    }
}

function whatDay(answer) {
    if (answer === 0) return 'FRI';
    if (answer === 1) return 'SAT';
    if (answer === 2) return 'SUN';
    if (answer === 3) return 'MON';
    if (answer === 4) return 'TUE';
    if (answer === 5) return 'WED';
    if (answer === 6) return 'THU';
}

function solution(a, b) {
    let answer = b - 1;
    for (let i = 1; i < a; i++) {
       answer += getDays(i); 
    }
    answer = whatDay(answer %= 7);

    return answer;
}

예전에는 이렇게 풀었다.
하지만 이 때는, 객체지향적인 게 뭔지도 몰랐고, 대충 말하자면, 그냥 C++ 같은 방식으로만 풀었다.
나름 저것도 창의적인 방법이라고 생각하면서 풀었던 거 같다.
하지만 내장, 프로토타입 함수가 강력하다는 걸 안 지금, 굳이 저렇게 풀 필요는 없다.

const solution = (a, b) => {
    const whatDay = new Date(2016, a - 1, b).getDay();
    return ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"][whatDay];
}

이렇게 풀면 더 간단하다.
객체지향적인 코드다.
객체의 상태 값에 따라서 결론이 도출되는 코드를 객체지향적이라고 한다, 나는 그렇게 생각한다.
물론 이 객체는 내가 만든 객체는 아니지만. :)

반응형