BOJ 5635 with js _ 생일
5635 with Node.js _ 생일
입력
첫째 줄에 반에 있는 학생의 수 n이 주어진다. (1 ≤ n ≤ 100)
다음 n개 줄에는 각 학생의 이름과 생일이 “이름 dd mm yyyy”와 같은 형식으로 주어진다. 이름은 그 학생의 이름이며, 최대 15글자로 이루어져 있다. dd mm yyyy는 생일 일, 월, 연도이다. (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31) 주어지는 생일은 올바른 날짜이며, 연, 월 일은 0으로 시작하지 않는다.
이름이 같거나, 생일이 같은 사람은 없다.
출력
첫째 줄에 가장 나이가 적은 사람의 이름, 둘째 줄에 가장 나이가 많은 사람 이름을 출력한다.
정답 코드
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `` // 기본 입력값 설정 (백준 코딩테스트에서 비워놔도 무방하다.)
).split("\n");
const input = (() => { //input()을 호출할 때마다 한줄씩 읽어온다.
let line = 0;
return () => stdin[line++];
})();
const peopleCount = Number(input());
let peple = [];
let latest = new Date('1991 1 1'); // 문제에서 가장 빠른 날짜
let earliest = new Date('2010 12 31'); // 문제에서 가장 느린 날짜
let youngestPerson = '';
let oldestPerson = '';
for(let i = 0; i < peopleCount; i++ ){
const [name, day, month, year] = input().split(' ');
const date = new Date(year + ' ' + month + ' ' + day);
if (date >= latest){ // 최신 시간보다 더 늦은 시간일 때
latest = date;
youngestPerson = name;
}
if (date <= earliest){ // 가장 이른 시간보다 날짜가 이를 때
earliest = date;
oldestPerson = name;
}
}
console.log(youngestPerson + '\n' + oldestPerson); // 결과 값 출력
살펴보아야 할 점
JS에서 Date 함수
날짜 문제에서 대소 비교가 날짜의 빠르고 느린 상황임을 염두해야 한다.
Leave a comment