PR - 2016년

goody·2021년 2월 16일
0

알고리즘

목록 보기
41/90

문제

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|

풀이_1

  • 2016년의 각 월별 1일이 무슨 요일인지 배열에 따로 저장해둔다.
  • 입력받은 월의 첫 번째 날로부터 b만큼 더하되, 요일을 구해야 하므로 7로 나눈 나머지를 구한다.
  • 일은 오늘부터 새므로, 위의 식에서 1을 뺀다.
  • 요일이 0에서 7까지를 벗어나는 경우는 예외처리를 해준다.

코드_1

function solution(a, b) {
    let answer = '';
    const FIRST_DAYS = [5, 1, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4];
    const DAYS = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];

    const firstDay = FIRST_DAYS[a-1];

    let day = firstDay - 1 + (b % 7);
    if(day >= 7) day = day % 7;
    if(day < 0) day = 6;

    answer = DAYS[day];
    return answer;
}

풀이_2

  • 자바스크립트의 Date객체를 이용하면 지정한 연도의 월, 일, 요일을 구할 수 있다.

코드_2

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

0개의 댓글