[백준] 1924_2007년 (Javascript)

잭슨·2024년 1월 26일
0

알고리즘 문제 풀이

목록 보기
2/130
post-thumbnail

문제

BOJ1924_2007년

풀이

문제에 2007년 1월 1일은 월요일이라는 내용과 각 달의 말일이 명시되어있으므로 이를 이용해서 문제를 풀 수 있다.

월을 month변수에 담고, 일을 day변수에 담았다고 했을 때 "(1월의 말일 부터 month-1월의 말일의 총합 + day) % 7이 0이면 '일요일', 1이면 '월요일', 2면 '화요일' ... 6이면 '토요일'이 된다.

1월 1일은 (0+1)%7=1 이므로 '월요일'이다.
3월 14일은 (31+28+14)%7=3 이므로 '수요일'이다.
이걸 코드로 구현하면 아래와 같다.

코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./LJH/input.txt";
let input = fs.readFileSync(filePath).toString().split(" ").map(Number);
let [month, day] = input;
for (let i = month - 1; i >= 1; i--) {
    switch (i) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day += 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day += 30;
            break;
        case 2:
            day += 28;
            break;
    }
}

switch (day % 7) {
    case 0:
        console.log("SUN");
        break;
    case 1:
        console.log("MON");
        break;
    case 2:
        console.log("TUE");
        break;
    case 3:
        console.log("WED");
        break;
    case 4:
        console.log("THU");
        break;
    case 5:
        console.log("FRI");
        break;
    case 6:
        console.log("SAT");
        break;
}

하지만 이것보다 더 쉽게 구현하는 방법이 있다. 바로 Date객체의 getDay()메서드를 사용하는 방법이다.
[MDN]Date.prototype.getDay()
아래는 이 방법으로 구현한 코드다.

코드(Date 객체 사용)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./LJH/input.txt";
let input = fs.readFileSync(filePath).toString().split(" ").map(Number);
let [month, day] = input;
const week = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
console.log(week[new Date(`2007-${month}-${day}`).getDay()]);
profile
지속적인 성장

0개의 댓글