(JS) Programmers : 2016년

호두파파·2021년 2월 3일
0

메모

목록 보기
10/18

문제 설명

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

입출력 예시

문제풀이

이번 주 자바스크립트 DOM 과제가 달력 만들기였기 때문에 개념 공부 겸 선택한 문제다. 문제 자체는 평이해서 어렵진 않았다.

각 요일을 배열에 담아 참조할 수 있도록 만들어주고,
기준점이 되는 년도인 2016년을 new date의 인자로 넣어줬다.
문제에서 이미 월, 일을 solution 함수의 인자로 주고 있기 때문에,
new Date에 들어갈 인자의 변수로 넣어주었다.

function solution(a, b) {
    const week = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
    const currentTime = new Date(`2016-${a}-${b}`).getDay();
    return week[currentTime];
}

다른 사람 풀이

function solution(a, b) {
    const monthDay = [31,29,31,30,31,30,31,31,30,31,30,31]
    const weekDay = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]

    let days = b
    for(let i=0 ; i<a-1 ; i++)
        days += monthDay[i];

    return weekDay[days%7];
}

date객체를 사용하지 않고, 알고리즘으로만 해결한 문제.
2016년의 각 월별 일수를 배열에 담아 기준으로 삼을 참조값을 마련했다.
각 월별 일수를 참조하기 위해 for 반복문에서 a-1을 사용했다.

알고리즘으로만 문제를 풀었다는 점에서 이 해결방법이 더욱 정답에 가깝게 느껴졌다.

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글