https://programmers.co.kr/learn/courses/30/lessons/12901
2016년 1월 1일은 금요일
2016년 a월 b일은 무슨 요일인지 return
- 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
- 2016년은 윤년(2월을 29일로 둔 해)
1. 1월 1일부터 a월 b일까지 계산했을 때의 총 일수 구하기
days배열 : 요일들이 들어있는 배열.
인덱스 번호를 구할 때는 (totalDays % 7)로 구한다.
1월 1일이 금요일이기 때문에 1 % 7 === 1이 되니까 1번 인덱스의 값은 금요일이다. 따라서 나머지가 0인 경우는 목요일!
그리하여 목.금.토.일.월.화.수의 순서대로 요일을 설정하였다.
const days = ['THU', 'FRI', 'SAT','SUN', 'MON', 'TUE', 'WED', ];
monthDays배열: 각 월마다 일수가 며칠인지 나타냄.
(ex. 0번 인덱스에 해당하는 값 : 1월의 총 일수)
const monthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
totalDays : a월 b일까지 총 며칠인지 계산하기 위한 변수
ex. a = 5, b = 24로 날짜가 5월 24일이라면,
monthDays의 0번 인덱스(1월)부터 3번 인덱스(4월)까지에 있는 값들을 더한다. 1~4월까지의 합이 totalDays에 누적된다.
그리고 5월의 일수에 해당하는 b값까지 더해주면 총 totalDays를 구할 수 있다.
나는 처음부터 b값을 totalDays의 값으로 설정해주었고 그다음에 전 월의 일수들을 더해주었다.
2. 요일 구하기: days배열에서 totalDays을 7로 나눈 나머지에 해당하는 인덱스의 값이 답
function solution(a, b) {
let answer = '';
const days = ['THU', 'FRI', 'SAT','SUN', 'MON', 'TUE', 'WED', ];
const monthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let totalDays = b;
for (let i = 0; i < a - 1; i++) {
totalDays += monthDays[i];
}
answer = days[totalDays % 7];
return answer;
}
문제를 보는 즉시 총 일수를 구하여 7로 나누어서 풀어야겠다는 생각이
바로 떠오르지는 않았다...