일단,
let day =
{
0 : "FRI",
1 : "SAT",
2 : "SUN",
3 : "MON",
4 : "TUE",
5 : "WED",
6 : "THU",
}
로 FRIDAY ~ THURSDAY 까지 0 ~ 6으로
딕셔너리에 표현해줬다.
이후,
let month =
{
1 : 31,
2 : 29,
3 : 31,
4 : 30,
5 : 31,
6 : 30,
7 : 31,
8 : 31,
9 : 30,
10 : 31,
11 : 30,
12 : 31
}
로 1 ~ 12월까지 총 날짜를 month 딕셔너리에 정리했다.
for(let i = 1; i <= a; i++)
{
for(let j = 1; j <= month[i]; j++)
{
if(i == a && j == b) break;
count++
}
}
로 2016년 1월 1일 ~ 2016년 a월 b일까지
며칠이 걸리는지 count로 계산하고,
return day[count & 7]
로 요일을 찾아냈다.
count % 7이 가능한 이유는,
한 주가 7일로 반복되기 때문이다.
제출한 코드 :
function solution(a, b) {
let day =
{
0 : "FRI",
1 : "SAT",
2 : "SUN",
3 : "MON",
4 : "TUE",
5 : "WED",
6 : "THU",
}
let month =
{
1 : 31,
2 : 29,
3 : 31,
4 : 30,
5 : 31,
6 : 30,
7 : 31,
8 : 31,
9 : 30,
10 : 31,
11 : 30,
12 : 31
}
let count = 0;
for(let i = 1; i <= a; i++)
{
for(let j = 1; j <= month[i]; j++)
{
if(i == a && j == b) break;
count++
}
}
return day[count % 7]
}
문제를 다 풀고 다른 사람들의 코드를 분석한 결과
Date Class를 사용한 풀이법이 존재했다.
(슬슬 Class가 나오기 시작하는구나~)
Date Class 사용법은
let 변수이름 = new Date(연도, 월, 일, 시, 분, 초, milli 초)로
가능하다.
이때,
(중요)
연도 : 1 ~ 현재 연도,
월 : 0 ~ 11
일 : 1 ~ 그 달에 마지막 날짜,
시 : 0 ~ 23
분 : 0 ~ 59
초 : 0 ~ 59
milli 초 : 0 ~ 999
(중요)
(컴퓨터는 1초가 1000초)
로 초기화가 가능했다.
특이하게 월은 index 표기법으로
0 ~ 11가 1 ~ 12월까지 였다.
(일관성 없는거 불편...)
그렇게
let date = new Date(2016, a - 1, b).getDay()
로 해당 요일을 받아왔는데
(중요)
0 : 일요일
1 : 월요일
2 : 화요일
3 : 수요일
4 : 목요일
5 : 금요일
6 : 토요일
(중요)
을 의미한다고 한다.
그래서
let day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
로 요일을 영문자로 표현할 수 있게 해줬고
return day[date] 해줬다.
제출한 코드 :
function solution(a, b)
{
let day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
let date = new Date(2016,a - 1,b).getDay();
return day[date]
}
추가적으로 Date Class의 Set함수와 Get함수를 알아 보자면,
가 있었고,
위 함수들로
처럼 사용 가능하고,
문자열 변환 함수로
가 있다.
제출한 코드 :
function solution(a, b)
{
let date = new Date(2016,a - 1,b).toString();
return date.slice(0,3).toUpperCase()
}
로 날짜를 문자열로 변환해 요일 부분만
편집으로도 표현 가능했다.
'문제 풀기 > JavaScripts' 카테고리의 다른 글
문제 56. 과일 장수(난이도 5) (0) | 2024.08.02 |
---|---|
문제 55. 카드 뭉치(난이도 7)(shift) (0) | 2024.08.02 |
문제 53. 명예의 전당(1)(난이도 7) (0) | 2024.08.02 |
문제 52. 콜라 문제(난이도 7) (0) | 2024.07.31 |
문제 51. 푸드 파이트 대회(난이도 3) (0) | 2024.07.31 |