7월 13일 알고리즘 문제풀이
프로그래머스 lv1 문제 풀이: 2016년
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"를 반환하세요.
a | b | result |
---|---|---|
5 | 24 | "TUE" |
//문제풀이
function solution(a, b) {
let week = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];
//1월1일이 금요일이기 때문에 1번 인덱스가 금요일이 되도록 작성
let 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,
};
// 각 월별 날짜를 저장
let day = 0;
if (a === 1) {
day = day + b; // 1월일 경우에는 일수만 더해준다.
} else {
for (let i = 1; i <= a - 1; i++) {
day = day + month[i];
}
day = day + b;
// 그외의 달에는 이전달까지를 모두 더하고 날짜까지 더해준다.
}
let result = day % 7;
return week[result]; // 해당 인덱스에 맞는 요일 출력
}
// 윤년이라는 걸 가정한 상태
/*
1: 31일
2: 29일
3: 31일
4: 30일
5: 31일
6: 30일
7: 31일
8: 31일
9: 30일
10: 31일
11: 30일
12: 31일
*/