프로그래머스 풀이/level1

[Programmers] level 1) 문제 '2016년' 풀이

진기명기 2023. 8. 14. 13:48
🫠 Programmers (level 1) 👉🏻 문제 39번 (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

 

 

 


function solution(a, b) {
  let date = new Date(2016, a-1, b)
  let day = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
    
  return (day[date.getDay()]) 
}
✅ new Date()을 사용하여 날짜에 대한 값을 출력 ▶️ output : "2016-06-23T15:00:00.000Z"
❗️이때, 월이 0부터 시작하여, '0은 1월', '1은 2월',...
따라서 입력 값에서 -1을 통해 월을 정확하게 표현 ▶️ output : "2016-05-23T15:00:00.000Z"

✅ 해당 date의 값 중 getDay()를 통해 요일을 나타내는 값을 반환 ▶️ output : 2
💡 0부터 6까지로, '0은 일요일', '1은 월요일',... '6은 토요일'

✅ 따라서 date.getDay()을 통해 얻은 값을 day에서 위치값을 구하는 데 사용

 

 

 

💡 다른 사람 풀이
function getDayName(a,b){
  var tempDate = new Date(2016, a-1, b);
  return tempDate.toString().slice(0,3).toUpperCase();
}
✅ new Date의 값을 toString()으로 변환 ▶️ output : "Tue May 24 2016 00:00:00 GMT+0900 (Korean Standard Time)"

✅ slice를 통해 0번째부터 3번까지 잘라 반환(0,1,2)하고, 반환값을 toUpperCase()를 통해 대문자로 변환