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"를 반환하세요.
제한 조건- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예
abresult
a | b | result |
5 | 25 | "TUE" |
function solution(a, b) {
var answer = '';
let date = new Date(`2016, ${a}, ${b}`).getDay();
const week = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
const dayOfWeek = week[date];
return answer = dayOfWeek;
}
console.log(solution(5, 24));
getDay() 메서드로 주어진 날짜의 현지 시간 기준으로 반환해서 요일을 찾아주었습니다.
- getDay()메서드: 주어진 날짜의 현지 시간 기준 요일을 반환합니다. 0은 일요일을 나타냅니다.
다른사람의 풀이
function solution(a, b) {
// 윤년은 2월이 29일까지 있고, 1년은 정확히는 365.2422일이라고 합니다.
// 4, 100, 400으로 나누어지는 년도는 윤년입니다.
const weekToDay = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
const leapYearMonths = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let day = b + 4; // 1월 1일은 FRI, b가 1일 때 인덱스로는 5가 되어야합니다.
// 1월은 이전 월의 일수를 더하지 않기 때문에, a-1 조건으로 해야합니다.
for(let i = 0; i < a - 1; ++i){
day += leapYearMonths[i];
}
return weekToDay[day % 7];
}
다른사람의 풀이쪽에 저의 풀이 내용과 비슷하게 풀린 내용들이 꽤 있었는데, 알고리즘 문제에서 new Date() 객체를 사용했다고 질책하는 댓글들이 있었습니다..ㅠ
물론 알고리즘 절차에 따라 문제를 해결하는 것도 중요하다고 생각하지만, 활용할수 있는 내용을 가지고 활용하는 것도 나쁘지 않다고 생각합니다..!
:: 활용하는 내용은 잘 알고 써야한다고 생각은 합니다!
'JavaScript | TypeScript > Javascript 코딩테스트' 카테고리의 다른 글
[ Javascript ] 코딩테스트 1단계 ( 같은 숫자는 싫어 ) (0) | 2023.03.15 |
---|---|
[ Javascript ] 코딩테스트 1단계 ( 가운데 글자 가져오기 ) (0) | 2023.03.13 |
[ Javascript ] 코딩테스트 1단계 ( 콜라츠 추측 ) (0) | 2023.02.26 |
[ Javascript ] 코딩테스트 연습 ( 대문자와 소문자 ) (0) | 2023.02.25 |
[ Javascript ] 코딩테스트 1단계 ( 행렬의 덧셈 ) (1) | 2023.02.21 |