Link
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력 > 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력 > 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
| 예제 입력
1 1
| 예제 출력
MON
제출
const fs = require("fs");
const input = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1 1`
).split(" ");
const date = new Date(`2007-${input[0]}-${input[1]}`);
// solution 1
const day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
console.log(day[date.getDay()]);
// solution 2
console.log(date.toString().slice(0, 3).toUpperCase());
풀이과정
Solution 1
getDay()는 해당되는 요일에 따라 0(Sun)~6(Sat) 값을 반환한다.
요일을 담은 배열인 day를 만들고, getDay의 반환값을 day 배열의 인덱스로 사용해줄 수 있다.
Solution 2
console.log(date.toString()); // Mon Jan 01 2007 00:00:00 GMT+0900 (대한민국 표준시)
생성한 날짜를 toString() 메서드로 출력하면, Date 객체를 문자열로 반환한 값이 출력된다.
앞에 세자리에는 요일이 출력되므로 slice()와 toUpperCase()를 사용하면 문제를 해결할 수 있다.
개념
Date.prototype.getDay()
- 주어진 날짜의 현지 시간 기준 요일을 반환한다.
- 0 이상 6이하의 정수값을 반환하고 0은 일요일, 6은 토요일이다.
Date.prototype.toString()
- Date 객체의 타임존을 문자열로 반환한다.
String.prototype.slice()
- 지정한 시작 인덱스부터 끝 인덱스를 포함하지 않고 문자열을 추출하고, 추출한 부분을 새 문자열로 반환한다.
String.prototype.toUpperCase()
- 문자열을 대문자로 변환해 반환한다.
Comment
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2441: 별 찍기 - 4 (javascript) (0) | 2022.11.24 |
---|---|
[백준] 2440: 별 찍기 - 3 (javascript) (0) | 2022.11.24 |
[백준] 11721: 열 개씩 끊어 출력하기 (javascript) (0) | 2022.11.23 |
[백준] 10953: A+B - 6 (javascript) (0) | 2022.11.23 |
[백준] 10872: 팩토리얼 (javascript) (0) | 2022.07.07 |