(node.js, JavaScript) 백준, 5635:생일

젼이·2024년 12월 5일

문제 분석

  • 문제 링크
  • 첫째 줄에 가장 나이가 적은 사람의 이름.
  • 둘째 줄에 가장 나이가 많은 사람 이름을 출력.

문제 설계

  1. 공백으로 구분
  2. 비교하는 숫자가 같은 경우 년,월,일 순으로 비교해서 정렬
  3. 나이가 어린순으로 정렬 후 0번째 자리와 마지막 자리수를 추출해 \n로 문자열을 나누고 출력
const fs = require("fs");
const lines = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const [n, ...string] = lines;
const test = string.map((item) => item.split(" "));
const sortArr = test.sort((a, b) => {
  if (parseInt(a[3]) === parseInt(b[3])) {
    if (parseInt(b[2]) === parseInt(a[2])) {
      return parseInt(b[1]) - parseInt(a[1]);
    } else {
      return parseInt(b[2]) - parseInt(a[2]);
    }
  } else {
    return parseInt(b[3]) - parseInt(a[3]);
  }
});
const result = sortArr.map((item, index) => {
  return item[0];
});

const resultName = `${result[0]}\n${result[result.length - 1]}`;

console.log(resultName);

결론

  • 숫자의 자리수가 만약 커진다면 주의해야할 듯하다.
    (하지만 생년월일 정도는 상관 없을 것 같다.)
  • 일반적인 입력에서는 nlogn 이 주요 성능 결정 요소이다.
profile
코드도 짜고, 근육도 짜고

0개의 댓글