[프로그래머스] Lv.1 2016년 JavaScript

Janet·2023년 3월 8일
0

Algorithm

목록 보기
63/314

문제 설명

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
524"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];
}
profile
😸

0개의 댓글