16일차 알고리즘

문제 설명
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"

const month = {
    1 : 31,
    2 : 29,
    3 : 31,
    4 : 30,
    5 : 31,
    6 : 30,
    7 : 31,
    8 : 31,
    9 : 30,
    10 : 31,
    11 : 30,
    12 : 31
}
const week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]
function solution(a, b) {
   //a월 b일까지 해당되는 모든 일수를 저장
   var answer = 0
   for( let i = 1; i< a: i++{
   		//a월 전까지의 모든 월의 일수를 더한다.
   		answer += month[i]
   }
   answer += (b - 1)
   answer = week[answer % 7]
  //console.log(answer)
  return answer
}

===============================================================================

const month = {
    1 : 31,
    2 : 29,
    3 : 31,
    4 : 30,
    5 : 31,
    6 : 30,
    7 : 31,
    8 : 31,
    9 : 30,
    10 : 31,
    11 : 30,
    12 : 31
}
const week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]
function solution(a, b) {
	const answer = new Array(a)
    					.fill(1)
                        .reduce(acc, cur + i) => {
                        const mn = cur + i
                        console.log(acc, mn)
                        return acc + (mn !== a
							//이전 월일 경우
                            ?month[mn]
                            //해당 월일 경우
                            :b - 1
                        )                                         	  
						},0)
    //console.log(answer)
    return week[answer % 7]
}

===============================================================================

const week = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
function solution(a, b) {
	const answer = new Date( 2016, a - 1, b).getDay()
    //console.log(answer)
    return week[answer]
    
}

좋은 웹페이지 즐겨찾기