[lv1] 2016년

걸음걸음·2023년 2월 22일
0

Test

목록 보기
4/29

문제링크

  • 2016년 a월 b일이 무슨 요일인지 return
  • 2016년은 윤년
  • 윤년은 1년이 366일. 4, 100, 400으로 나누어 떨어지는 년도.
function solution(a, b) {
    const week = ['SUN','MON','TUE','WED','THU','FRI','SAT']
    const day = new Date(2016, a-1, b).getDay() // 요일의 인덱스 반환
    return week[day]
}

다른 사람의 풀이

function solution(a, b) {
    const weekToDay = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
    const leapYearMonths = [31,29,31,30,31,30,31,31,30,31,30,31]; 
    let day = b+4; // a월 b일의 날짜수
  	// 1월 1일은 FRI이므로 b가 1일 때 weekToDay의 index는 5.
    for(let i = 0; i < a-1; ++i){
    	// 1월은 이전 월의 일수를 더하지 않으니 a-1
        day += leapYearMonths[i];
    }
    return weekToDay[day%7];
}

Date()

날짜를 저장하거나 관련된 메서드를 제공해주는 내장 객체

new Date()
// Wed Feb 22 2023 22:16:20 GMT+0900 (한국 표준시)
  • new Date(year, month, date, hours, minutes, seconds, ms)
    year은 반드시 네 자리 숫자
    month는 0(1월)부터 11(12월) 사이의 숫자
    date의 값이 없는 경우 1로 처리
    hours~ms 값이 없는 경우 0으로 처리
new Date('2016-01-01')
// Fri Jan 01 2016 09:00:00 GMT+0900 (한국 표준시)
// (시간 지정이 없기 때문에 00시00분 기준)
  • 날짜 구성요소
    getFullYear() : 연도 반환
    getMonth() : 월 반환(0~11)
    getDate() : 일 반환(1~31)
    getHours() ~ getMilliseconds() : 시분초밀리초 반환
    getDay() : 요일반환(일요일 기준 0 반환, 토:6)
profile
꾸준히 나아가는 개발자입니다.

0개의 댓글