요즘 계속 공부, 공모전, 다른 일들 하느라 바쁘다는 핑계로 안하고 있어서 해이해진 마음을 다잡기 위해 . . . 다시 코테를 잡았다😶🌫️
핑계대지 말고 꾸준히 풀자 ..!!👊
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
값보다 이전의 월(a-1
)의day
값만 더해주기
ex) a=5->days
= 1월(31), 2월(29), 3월(31), 4월(30) 더해주기
( 4월의 인덱스 값은 3임. 반복문:i < a-1
)b
의 값은 더해주기
ex) 1월 2일 =2
, 2월 2일 =31+2=33
- 구한
days
값을7
로 나누어 요일return
function solution(a, b) {
var days = 0
const month = [31,29,31,30,31,30,31,31,30,31,30,31]
for (let i=0; i< a-1; i++){
days += month[i]
}
days += b
switch (days % 7){
case 1:
return "FRI"
case 2:
return "SAT"
case 3:
return "SUN"
case 4:
return "MON"
case 5:
return "TUE"
case 6:
return "WED"
default:
return "THU"
}
}
다른 분의 풀이를 보니 Date
객체를 사용하여 풀으셨다.
function solution(a, b) {
var arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
var date = new Date(`2016-${a}-${b}`);
var day = date.getDay()
return arr[day];
}
해당 코드로 돌려봤을 때 성공은 했으나 .. 내가 푼 풀이로는 다 비슷한 0.05ms로 나왔는데 Date
객체를 사용하면 특정 케이스는 시간이 더 걸리는 것으로 나타난다.
원인으로는 getDay()
로 예상하고 있는데 정확히 자료가 잘 안나와서ㅠㅠ 좀 더 찾아보고 따로 정리해봐야할 것 같다.