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" |
💡 문제풀이 과정
- 나의 경우는
new Date()
메소드를 사용하여 손쉽게 풀었다. 답안 3번의 경우 이 메소드를 사용하지 않고, 2016년도 열두 달의 일수와 요일을 배열로 담고for()
반복문을 이용하여 푼 것을 참고하였다.- 답안 1번: 요일을 배열에 미리 담아두고,
new Date().getDay()
를 이용하여 요일을 출력한다.getDay()
의 경우 요일을 숫자로 출력하는데, 0은 일요일, 1은 월요일, 2는 화요일이다.- 답안 2번: 사실 요일을 꼭 문자열로 꼭 직접 쓸 필요는 없다.
new Date()
메소드를 사용하면, 다음과 같이 요일이 맨 앞에 출력되기 때문이다. 요일만 가져오기 위해서 배열 형태로 만들고 인덱스 0번을 가져오면 되겠다. 다음 예제 참고.
console.log(new Date()); // Thu Mar 09 2023 00:32:13 GMT+0900 (한국 표준시) console.log(new Date().toString().split(" ")); // ['Thu', 'Mar', '09', '2023', '00:32:13', 'GMT+0900', '(한국', '표준시)'] console.log(new Date().toString().split(" ")[0]); // Thu console.log(new Date().toString().split(" ")[0].toUpperCase()); // THU
✅ 답안 #1
function solution(a, b) {
const week = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
const getDay = new Date(`2016-${a}-${b}`).getDay();
return week[getDay];
}
✅ 답안 #2
function solution(a, b) {
return new Date(`2016-${a}-${b}`).toString().split(" ")[0].toUpperCase();
}
✅ 답안 #3
function solution(a, b) {
const week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
// 2016년 1월 1일은 금요일
const monthDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let days = b;
for (let i = 0; i < a - 1; i++) {
days += monthDay[i];
}
days -= 1;
return week[days % 7];
}