생일

문제

언어

  • JavaScript

순서도

  1. 학생들을 나이순으로 정렬
  2. 가장 나이가 많은 학생과 가장 나이가 적은 학생 출력

문제 풀이 step 1

  • 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 문제입니다.
  • 생일은 “이름 dd mm yyyy” 와 같은 형식으로 주어집니다. 이 문자열 형식에서 일, 월, 연도를 분리해서 오름차순으로 정렬해주고, 적절히 출력해주면 되겠습니다.
  • 추가 설명은 주석으로 작성하겠습니다.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

const solution = (input) => {
	const n = Number(input[0]);

	const list = input
		.slice(1)
		.map((v) => v.split(" "))
		.sort((a, b) => {
			const [_1, d1, m1, y1] = a.map(Number);
			const [_2, d2, m2, y2] = b.map(Number);

			// 연도, 월, 일 순으로 정렬
			if (y1 !== y2) return y1 - y2;
			if (m1 !== m2) return m1 - m2;
			return d1 - d2;
		});

	// 적절히 출력
	return `${list[n - 1][0]}\n${list[0][0]}`;
};

console.log(solution(input));