[백준 알고리즘] Node.js 1340. 연도 진행바

2023. 3. 29. 14:51코딩연습

1. 문제

https://www.acmicpc.net/problem/1340

 

1340번: 연도 진행바

평년일 때, 각 달은 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31일이 있다. 윤년에는 2월이 29일이다. 윤년은 그 해가 400으로 나누어 떨어지는 해 이거나, 4로 나누어 떨어지면서, 100으로 나누어 떨어지지

www.acmicpc.net

 

2. 풀이

- 1년을 100%로 잡고 입력받은 날짜와 그 해의 1월 1일 00시 00분 빼는 생각으로 진행.

- 1년의 기준은 입력받은 연도의 1월 1일 00시 00분 부터 다음 연도 1월 1일 00시 00분까지로 생각.

const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');

let initTime = new Date(`January 1, ${inputs[2]} 00:00`).getTime();
let fullTime = new Date(`January 1, ${Number(inputs[2])+1} 00:00`).getTime();
let nowTime = new Date(`${inputs[0]} ${inputs[1]} ${inputs[2]} ${inputs[3]}`).getTime();

let denominator = fullTime - initTime; // 1년 동안의 timestamp 값
let numerator = nowTime - initTime; // 입력 받은 값의 날짜까지의 timestamp 값

console.log( (numerator / denominator) * 100);

 

3. 정리

- Date() 메서드에서 월을 영어로 써도 된다는 사실을 알았다.