[링크]
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월
.
.
.
'Algorithm' 카테고리의 다른 글
[프로그래머스] 내적 - JavaScript 📝 (0) | 2021.11.09 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] 부족한 금액 계산하기 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] 행렬의 덧셈 - JavaScript 📝 (0) | 2021.11.09 |