백준1308 - D-Day node.js 본문
반응형
https://www.acmicpc.net/problem/1308
자바스크립트로 해결된 포스팅이 없어 포스팅하게 됨.
문제 풀이 방식
시작 날짜의 총 날짜와, 끝 날짜의 총 날짜를 깡으로 구해서 그 차이를 출력하는 방식으로 접근하였다. 문제에서 말하는 윤년 기준을 적용하는 방식이 은근히 까다로웠던 문제.
전체 소스 코드
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
.toString()
.trim()
.split("\n");
function solution(data) {
const [[sy, sm, sd], [ey, em, ed]] = data.map((el) =>
el.split(" ").map(Number)
);
if (sy + 1000 < ey || (sy + 1000 == ey && sm <= em && sd <= ed)) {
console.log("gg");
return;
}
const start = getDays(sy, sm, sd),
end = getDays(ey, em, ed);
console.log(`D-${end - start}`);
}
function verifyYear(y) {
if (y % 4 === 0) {
if (y % 100 === 0 && y % 400 !== 0) return false;
else return true;
}
return false;
}
function getDays(y, m, d) {
let cnt = d;
const monthDays = [
31,
verifyYear(y) ? 29 : 28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31,
];
for (let i = 0; i < y; i++) cnt += 365 + verifyYear(i);
for (let i = 0; i < m - 1; i++) cnt += monthDays[i];
return cnt;
}
solution(input);
반응형
'개발 > algorithm' 카테고리의 다른 글
프로그래머스 - Lv.3 다단계 칫솔 판매 (트리 | DFS) JS (0) | 2024.02.16 |
---|---|
백준6550 - 부분 문자열 (탐욕법) node.js (0) | 2024.02.14 |
백준2891 - 카약과 강풍 (탐욕법) node.js (0) | 2024.02.10 |
백준12847 - 꿀 아르바이트 (누적합) node.js (0) | 2024.02.10 |
프로그래머스 - Lv.3 부대 복귀 (BFS) JS (0) | 2024.02.08 |
Comments