개발 공부/알고리즘

[프로그래머스 알고리즘] "2016년" JavaScript / new Date()

U_D 2022. 3. 13. 22:43

1. 문제 설명

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"를 반환하세요.

 

 

2. 제한 조건

2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다.
(13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

 

 

3. 예시

  • 입력/출력

 

4. 풀이

 

[for문 활용]
7개의 요일이 들어있는 배열과 각 달의 날짜수가 있는 배열을 선언해준다.

해당 날짜까지의 총 날자수의 합에서 7을 나눈다. --> 요일이 7개

function solution(a, b) {
    const weekly = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
    const months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    let day = b+4;
      
    for(let i = 0; i < a-1; i++){
         day += months[i]
        }
    return weekly[day % 7];
    }

 

 

[Date 활용]

function getDayName(a,b){
    var arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
    var date = new Date(`2016-${a}-${b}`);
  var day = date.getDay()
    return arr[day];
}

 

new Date() 

- 아무런 인수를 전달하지 않으면 현재 날짜와 시간을 가지는 인스턴스를 리턴한다.

var date = new Date();
// Wed Mar 27 2019 20:21:44 GMT+0900 (한국 표준시)


- Date 생성시 다양한 형태로 출력 가능
- 아래는 ISO 날짜 양식 *더 자세한 정보는 아래 출처 링크 클릭

new Date("2020-03-26T13:30:00"); // Thu Mar 26 2020 13:30:00 GMT+0900 (대한민국 표준시) 
new Date("2020-03-26UTC13:30:00"); // Thu Mar 26 2020 22:30:00 GMT+0900 (대한민국 표준시) 
new Date("2020-03-26GMT13:30:00"); // Thu Mar 26 2020 22:30:00 GMT+0900 (대한민국 표준시) 
new Date("2020-03-26"); // 시간이 생략되면 자동으로 09:00:00으로 설정됨. 
new Date("2020-03"); // 일이 생략되면 자동으로 1일로 설정됨. 
new Date("2020"); // 월이 생략되면 자동으로 1월로 설정됨.

출처 : https://goddaehee.tistory.com/234

 

 

getFullYear() : 년도 출력 

console.log(date.getFullYear()); //2019

 

getMonth() : 월 출력 

- 단, 0부터 시작합니다. 1월 - > 0

- 그래서 +1 필요

console.log(date.getMonth()); //현재 3월이면 2

 

getDate() : 날짜 출력 

console.log(date.getDate()); //27

 

getDay() : 요일 출력 

- 월요일 = 1, 화요일 = 2, 수요일 3...

console.log(date.getDay()); //3

출처 : https://powerku.tistory.com/124