[JS] 백준_1924_2007년

응다다·2021년 8월 25일
0

Algorithm_JS

목록 보기
2/2
post-thumbnail

1. 문제

문제 1924 링크

문제

오늘은 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
입력 : 3 14 -> 출력 : WED
입력 : 9 2 -> 출력 : SUM
입력 : 12 25 -> 출력 : TUE

2. 풀이

첫번째 숫자는 '달'(month) 이고, 두번째 숫자는 '일'(day)이다.
number라는 변수 : 2007년 1월 1일부터 ~ 2007년 month월 day일 까지의 일 수를 더한 값
number를 7로 나눠서 나머지 값이 0이면 "SUN", 1이면 "MON", 2이면 "TUE", 3이면 "WED", 4면 "THU", 5면 "FRI", 6이면 "SAT"으로 나타낸다.

3. 코드

1) 처음 코드 -> 성공

var input = require('fs').readFileSync('/dev/stdin').toString().split(' ');
let month = Number(input[0]);
let day = Number(input[1]);
let number = 0;
for(let i = 1; i < month; i++ ){
    if(i === 1 || i === 3 || i === 5 || i === 7 || i === 8 || i === 10 || i === 12){
        number += 31;
    } else if(i === 2){
        number += 28;
    } else{
        number += 30;
    }
}
number += day;
switch(number % 7){
    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;
    case 0:
        console.log("SUN");
        break;
}

2) 더 간단한 코드 -> 성공

var input = require('fs').readFileSync('/dev/stdin').toString().split(' ');
let month = Number(input[0]);
let day = Number(input[1]);
const week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
console.log(week[new Date('2007-' + month + '-' + day).getDay()]);
const date = new Date('2007-03-14');
console.log(date);
// Wed Mar 14 2007 09:00:00 GMT+0900 (한국 표준시)   
  • Date에 getDay()메서드 사용하기
    : 주어진 날짜의 현지 시간 기준 일자를 반환, 0은 일요일을 나타낸다.
    mozilla 링크
const date = new Date('2007-03-14');
console.log(date.getDay());
// 3

0개의 댓글