코딩연습
[백준 알고리즘] 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() 메서드에서 월을 영어로 써도 된다는 사실을 알았다.