[코드테스트]2016

이강민·2021년 11월 10일
0

[코드테스트]Javascript

목록 보기
18/39
post-thumbnail

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일같은 날짜는 주어지지 않습니다)

입출력 예

a b result
5 24 "TUE"

문제풀이

Date 클래스를 활용하면 비교적 쉽게 풀수 있는 문제였다.
fullDate는 현재시간을 가지고 있고 setfullyear를 하면 원하는 년도의 날짜 정보를 알 수 있다. 물론 수동으로 윤년과 평년을 계산하고 각 월 마다 일수를 계산한다음 또 거기에 일주일의 각 요일을 대입하여 계산할 수 도 있지만 그러기에는 너무 비효율적이라서 Date 클래스를 사용하였다.
Date 클래스로 이미 정보를 담고 있는 클래스함수를 사용하기 위해 new를 사용하지만 이는 자바스크립트에서 new 사용하는 것을 지양하라고 하였다. 하지만 임의로 만든 클래스가 아닌 이미 내장되어 있는 클래스를 이용하기에 오버라이드만 하지 않는다면 안정적으로 작동 될것이다.

function solution(a, b) {
    //day는 문자열이 아닌 숫자로 반환하기 때문에 따로 배열을 만들었다. 
    let day = ["SUN", "MON", "TUE","WED", "THU","FRI", "SAT"];
  	//Date 클래스를 불러오기 위해 new로 초기화하였고 변수는 want_day를 사용했다.
    let want_day = new Date();
  //원하는 년도를 입력하고
    want_day.setFullYear(2016)
  //매개변수로 받는 월을 입력하고(a-1 하는 이유는 1일 경우 2를 리턴하기 때문)
    want_day.setMonth(a-1)
  //두번째 매개변수로 받는 일수를 입력하여
    want_day.setDate(b)
  //Day를 가져와 배열index에 넣으면 원하는 값을 얻는다. 
    return day[wantDay.getDay()];
}

위 코드를 좀더 간단하게 넣을 수 있다. 클래스에서 바로 작성이 가능한 것이다. Date 정보를 한정적으로 사용되지만 원하는 정보가 소수의 정보일 경우 용이할 것 같다.

function solution(a, b) {
    let day = ["SUN", "MON", "TUE","WED", "THU","FRI", "SAT"];
  //초기화 할 때 바로 매개변수를 입력하였다. 원한다면 년도도 매개변수로 입력 받을 수 있겠다.
    let wantDay = new Date(2016, a-1, b);
    return day[wantDay.getDay()];
}
profile
AllTimeDevelop

0개의 댓글

관련 채용 정보