본문 바로가기

Algorithm/level1

[프로그래머스] 2016년 (Javascript)

문제 설명

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일 같은 날짜는 주어지지 않습니다)

입출력 예

a b result
5 24 "TUE"

나의 풀이

나는 월마다 각각의 일 수를 모두 더한 후, 요일 수인 7을 나누어 나머지 값을 이용해 요일을 반환하려고 한다. 

function solution(a, b) {
    let totalDate = b;
    for(let i = 1; i < a; i++) {
        if(i === 2) {
            totalDate += 29;
        } else if([4, 6, 9, 11].includes(i)) {
            totalDate += 30;
        } else {
            totalDate += 31;
        };
    };
    let week = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED'] ;
    return week[totalDate % 7];
}
  1. for문을 활용해 입력받은 날짜까지의 총일수를 더한다.
  2. 2016년 1월 1일은 금요일 이므로 일수에서 7로 나눈 나머지 값이 1일 때 'FRI'로 반환하고 싶었기 때문에 'THU'로 시작하는 요일 배열 week를 생성했다.
  3. week에서 총 일 수 에서 7로 나눈 나머지값 인덱스에 있는 값을 반환한다.