🫠 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()를 통해 대문자로 변환
'프로그래머스 풀이 > level1' 카테고리의 다른 글
[Programmers] level 1) 문제 '시저 암호' 풀이 (0) | 2023.08.09 |
---|---|
[Programmers] level 1) 문제 'k번째 수' 풀이 *** (0) | 2023.06.04 |
[Programmers] level 1) 문제 '푸드 파이터 대회' 풀이 *** (0) | 2023.06.03 |
[Programmers] level 1) 문제 '두 개 뽑아서 더하기' 풀이 *** (0) | 2023.06.03 |
[Programmers] level 1) 문제 '문자열 내 마음대로 정렬하기' 풀이 *** (0) | 2023.06.02 |