프론트엔드✏️/코드캠프
알고리즘 - 달력 문제, reduce, Date()
당근먹는하니
2022. 6. 7. 18:09
728x90
반응형
2016년 1월 1일 : 금요일
+0 : 1월 1일 (+0)
+1 : 1월 2일 (+1) 토요일
+2 : 1월 3일 (+2) 일요일
...
+7 : 1월 8일 (+0) 금요일
몇 개의 요일이 지났는지 확인
month : 1월 31, 2월 29, 3월 31, ... 며칠있는지 다 적어놓기
days += month[i]
밸류값만 뽑아서 저장!
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 day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
function solution(a, b) {
let days = 0;
for(let i = 1; i<a; i++) {
days += month[i]; // 하루를 뺀 값!(당일 제외)
}
days += (b-1);
console.log(days % 7, days)
console.log(day[days%7])
}
solution(5, 24); // TUE
# reduce 이용
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 day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
function solution(a, b) {
const days= new Array(a)
.fill(1)
.reduce((acc,cur,i) => {
const mn = cur + i;
return acc + ( mn !== a
? month[mn] // a월 이전의 월일 경우 통째로 일수를 더해준다.
: b - 1
)
})
return day[days%7];
}
solution(5, 24);
Date() -> string
new Date() -> object
new Date ( 2016, 5, 24 ) -> 2016년 6월 24일의 데이터를 가져옴
728x90
반응형