2016년

Jamie·2022년 2월 22일
post-thumbnail

문제

문제 설명
201611일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 524일은 화요일이므로 문자열 "TUE"를 반환하세요.

제한 조건
2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다. (1326일이나 245일같은 날짜는 주어지지 않습니다)
입출력 예
a b result
5 24 "TUE"

풀이

function solution(a, b) {
    // 월별로 일수를 나타내는 배열을 만들어준다
    // 반복문을 돌면서 해당 월의 일수를 date에 더해준다
    // 해당 월까지 반복문을 돌면 date 값을 리턴해준다
    let date = 0;
    let day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
    let daysCount = [0, 30, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    for (let i = 1; i <= a; i++) {
        if (a === 1) {
            date = date + b - 1;
        } else if (a === i) {
            date = date + b;
        } else if (a !== i) {
            date = date + daysCount[i];
        }
    }
    return day[date % 7];
}

❗️ 반복문을 1월부터 돌아서 해당 월의 일수를 더해놓도록 코드를 짜놓았는데 a가 1일때는 작동하지 않는 예외적인 부분이 있었다.
✅ 풀어놓고 나니까 그렇게 복잡한 문제는 아니었는데 돌아돌아 온 것 같다. 배열말고도 객체로도 풀 수 있을 것 같은데 다음에 시도해봐야겠다!

profile
공부하고 비행하다 개발하며 여행하는 frontend engineer

0개의 댓글