차차로그
[JS] 연습문제 > 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"를 반환하세요.
function solution(a, b) {
var date = new Date('2016-01-01');
date.setMonth(a-1);
date.setDate(b);
var answer = date.getDay();
switch(answer){
case 0: return 'SUN'; break;
case 1: return 'MON'; break;
case 2: return 'TUE'; break;
case 3: return 'WED'; break;
case 4: return 'THU'; break;
case 5: return 'FRI'; break;
case 6: return 'SAT'; break;
}
}
내가 푼 문제
쉽게 Date객체를 받아서 푸는 것으로 생각했다
답은 잘 나왔는데 다른 사람 풀이를 보니 더 좋은 방법이 있는 걸 알았다
function solution(a, b) {
return new Date(2016, (a-1), b).toString().substr(0,3).toUpperCase();
}
new Date객체를 만들 때 바로 a와 b를 넣어서 객체를 생성하고 그것을 toString으로 문자열로 만든다.
그러면 Tue May 24 2016 00:00:00 GMT+0900 (Korean Standard Time)가 되고 요일만 필요하기 때문에 substr로 요일부분을 잘라낸다.
리턴값은 대문자로 해야하기 때문에 toUpperCase로 대문자로 만든다!
'코딩테스트' 카테고리의 다른 글
[JS] 해시 > 완주하지 못한 선수 (0) | 2022.08.18 |
---|---|
[JS] 연습문제 > 문자열 내 p와 y의 개수 (0) | 2022.08.18 |
[JS] 정렬 > K번째수 (0) | 2022.08.18 |
[JS] Summer/Winter Coding(~2018) > 소수 만들기 (0) | 2022.08.16 |
[JS] 월간 코드 챌린지 시즌2 > 약수의 개수와 덧셈 (0) | 2022.08.12 |
Comments