
문제 설명
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"
function solution(a, b) {
// 월별로 일수를 나타내는 배열을 만들어준다
// 반복문을 돌면서 해당 월의 일수를 date에 더해준다
// 해당 월까지 반복문을 돌면 date 값을 리턴해준다
let date = 0;
let day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
let daysCount = [0, 30, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (let i = 1; i <= a; i++) {
if (a === 1) {
date = date + b - 1;
} else if (a === i) {
date = date + b;
} else if (a !== i) {
date = date + daysCount[i];
}
}
return day[date % 7];
}
❗️ 반복문을 1월부터 돌아서 해당 월의 일수를 더해놓도록 코드를 짜놓았는데 a가 1일때는 작동하지 않는 예외적인 부분이 있었다.
✅ 풀어놓고 나니까 그렇게 복잡한 문제는 아니었는데 돌아돌아 온 것 같다. 배열말고도 객체로도 풀 수 있을 것 같은데 다음에 시도해봐야겠다!