(시작하기 전에 반드시 알아야 할 점)
✅ 요일 계산하는 법!
날수를 계산해서 나누기 7 = 나머지 값!
1일 경우 // 월요일
2일 경우 // 화요일
----- 0일 경우 // 일요일
✅ 예를 들어서
1년 1월 1일은 날수가 1일 % 7 = 나머지 1
1일이니까 // 월요일
여기서 헷갈리면 안 되는 것은 아예 처음인 1년 1월 1일로 설정했을 때 그렇다는 것이고
👌 여기서 2016년 1월 1일이 금요일이라고 했으니까
(원래) 1일 경우 월요일 // (현재) 몇일인지 + 4를 하면 금요일을 도출할 수 있다.
1월 2일은 날수 2일이고
2일 % 7 = 나머지 2 // 즉, 2 + 4는 6이니까 토요일을 산출할 수 있다.
✅ 제한조건보면 2016년은 "윤년"이다!
윤년 // 2월이 29일까지 있는 날 // 즉, 일 년은 366일!
이제 시작할 수 있다!
👌 알고리즘은 변수 설정부터!
let week = ['SUN','MON','TUE','WED','THU','FRI','SAT']
let number = [31,29,31,30,31,30,31,31,30,31,30,31];
let day = b+4;
요일은 일요일부터 토요일까지 설정해주고, 왜냐하면 나머지 0의 값이 일요일이니까
number는 날수 계산을 해야 해서, 설정해준 것! 윤달이니까 2월은 29일
day는 위에서 설정한 것처럼, +4를 해준다.
👌 날수 계산하자!
날수 계산하려면 number값을 다 더해주면 된다!
number의 첫번째 값인 31은 인덱스에선 0이다!
1월은 이전 월의 일수를 더하지 않음으로 a-1 조건으로 해야한다.
for(let i=0; i<a-1, i++){ // 인덱스의 첫번째 0부터 시작해서 31일부터 가지고 오자, 마지막 31일은 11번째 값이니까 a-1
day += number[i]; // number의 모든 값을 더해줘서 날수 계산하기
}
👌 요일은 날수 나누기 7을 했을 때의 나머지니까
day%7 // 나머지 계산 완료, day를 b+4를 해놓아서 맞춰놓은 상태
👌 요일 찾기
return week[day%7] // 요일의 나머지값 숫자에 있는 데이터를 가져와줘라는 의미
✅ 최종 코드
function solution(a, b) { let week = ['SUN','MON','TUE','WED','THU','FRI','SAT'] let number = [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 += number[i]; } return week[day%7]; } |
요일 계산하는 것은, 수학적인 지식이 없으면 이해하기 어렵다.
개념부터 바로 알고 가기!
'알고리즘 스터디 > [프로그래머스] 연습문제' 카테고리의 다른 글
[알고리즘] 내적 문제풀이(자바스크립트 javascript) (0) | 2022.07.16 |
---|---|
[알고리즘] 나누어 떨어지는 숫자 배열 문제풀이(자바스크립트 javascript) (0) | 2022.07.16 |
[알고리즘] 부족한 금액 계산하기 문제풀이(자바스크립트 javascript) (0) | 2022.07.16 |
[알고리즘] x만큼 간격이 있는 n개의 숫자 문제풀이(자바스크립트 javascript) (0) | 2022.07.16 |
[알고리즘] 핸드폰 번호 가리기 문제풀이(자바스크립트 javascript) (0) | 2022.07.15 |