[ 백준 ] 5835 생일 [ js ]

Ann·2023년 2월 16일
0

Algorithm

목록 보기
38/53

5835 생일

문제

어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 반에 있는 학생의 수 n이 주어진다. (1 ≤ n ≤ 100)

다음 n개 줄에는 각 학생의 이름과 생일이 "이름 dd mm yyyy"와 같은 형식으로 주어진다. 이름은 그 학생의 이름이며, 최대 15글자로 이루어져 있다. dd mm yyyy는 생일 일, 월, 연도이다. (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31) 주어지는 생일은 올바른 날짜이며, 연, 월 일은 0으로 시작하지 않는다.

이름이 같거나, 생일이 같은 사람은 없다.

출력

첫째 줄에 가장 나이가 적은 사람의 이름, 둘째 줄에 가장 나이가 많은 사람 이름을 출력한다.

풀이

// let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let input = [
			5,
			`Mickey 1 10 1991`,
			`Alice 30 12 1990`,
			`Tom 15 8 1993`,
			`Jerry 18 9 1990`,
			`Garfield 20 9 1990`,
            ];
let [N, ...arr] = input;
let students = [];
let answer = [];
for(let i=0; i<N; i++){
    let [name, ...birth] = arr[i].split(' ');
    let [day, month, year] = birth.map(n=>parseInt(n));
    let newArr = [name, day, month, year];
    students.push(newArr)
}
students.sort((a,b)=> (a[3]-b[3]) || (a[2]-b[2]) || (a[1]-b[1]));
answer.push(students[N-1][0]);
answer.push(students[0][0]);
console.log(answer.join('\n'))

sort로 다중 정렬 하는 방법을 찾아보고 풀이하였다
생일은 숫자가 작을 수록 나이가 많으므로 오름차순으로 정렬 했을때,
가장 나이가 많은 사람이 첫번째가 되고 가장 나이가 적은 사람이 마지막이 된다

profile
안녕하세요

0개의 댓글