본문 바로가기
Algorithm

[프로그래머스] 2016년 - JavaScript 📝

by Baest 2021. 11. 9.

[링크]

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

 

 

[문제설명 및 입출력 예]

 

 

 

[내가 제출한 코드 및 풀이]

 

function solution(a, b) {
    let answer = '';
    const week = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']; // 총 날짜 / 7 의 나머지가 1일 때 '금요일'
    const month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    let totDate = 0;
    
    for(let i=0; i<a-1; i++) { // 입력받은 a월의 전월까지 반복 (만약 1월이면 for문 돌지 않음)
        totDate += month[i]    // 전월까지의 날짜 계산            
    } 
    totDate += b;              // 해당 월의 날짜도 합산 
    answer = totDate % 7;      // 요일(7)로 나눔 
    answer = week[answer]      // week 인덱스에서 7로 나눈 나머지의 인덱스를 찾음 
    return answer;             // 요일 출력 
}

 

 

 

 

 

[다른 사람의 코드]

💡 data 메서드를 사용한 코드

function getDay(a,b){ 
	let day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"] 
    let date = new Date(`${a}, ${b}, 2016`).getDay() 
    return day[date] 
}

 

💡 data 메서드와 slice를 사용한 코드

function getDay(a,b){ 
	var date = new Date(2016, (a - 1), b); 
    return date.toString().slice(0, 3).toUpperCase(); 
}

 

 

Date() 메서드
함수로 호출할 경우 new Date().toString() 과 동일하게 현재 날짜와 시간을 나타내는 문자열을 반환

new Date() 메서드
생성자로 호출할 경우 새로운 Date 객체를 반환

new Date(year, monthIndex[, day[, hour [, minutes [, seconds, [, milliseconds ]]]]]);
👉 monthIndex 는 month를 나타내는 정수이고 1월은 0이므로, 특정 월을 지정할 경우 -1을 해줘야한다.
ex) a = 3 일 때, a-1 을 해줘야함!

0 : 1월
1 : 2월
2 : 3월
3: 4월
.
.
.