안녕하세요

프로그래머스 JavaScript [2016년] 본문

프로그래머스/Lv.1

프로그래머스 JavaScript [2016년]

sakuraop 2022. 9. 29. 21:46
  • 2016년
문제 설명

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

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

제한 조건
  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

입출력 예

abresult
5 24 "TUE"

const month = {
    1: 31,
    2: 29,
    3: 31,
    4: 30,
    5: 31,
    6: 30,
    7: 31,
    8: 31,
    9: 30,
    10: 31,
    11: 30,
};

const days = {
    1: "FRI",
    2: "SAT",
    3: "SUN",
    4: "MON",
    5: "TUE",
    6: "WED",
    0: "THU",
};

function solution(a, b) {
    let count = b;

    for (i = 2; i <= a; i++) {
        count += month[i - 1];
    }
    return days[count % 7];
}

 

12월 31일이 366 되도록 합니다.

366%7로 나머지의 값에 따라 요일을 반환하도록 합니다.

1월 1일은 금요일이므로 1%7 == 1 이 되기 때문에 1을 "FRI"로 기준을 잡았습니다.

 

let count = b; : 1월 1일이라면 1을 반환하도록 count 시작 숫자를 b로 합니다.

 

    for (i = 2; i <= a; i++) {
        count += month[i - 1];
    } //1월은 b만으로 count하면 되기 때문에 2월부터 month[i-1]의 값을 더하도록 합니다.

 

return days[count % 7]; : 더해진 값들을 7로 나누어 해당하는 요일을 반환합니다.