dogo_ day

JavaScript 코딩테스트 11. 문제(백준 10814번) 본문

IT/코딩테스트_

JavaScript 코딩테스트 11. 문제(백준 10814번)

dogo_ 2023. 5. 7. 23:11

🔅알고리즘 난이도 Lv. 2

🌈문제풀이

Map객체를 사용할 수 있다면 쉽게 문제를 해결 할 수 있다.

이름의 중복이 없다는 가정하에 이름-가입순서로 Map을 생성한다.

그리고 sort를 사용하여 정렬을 할 때 나이가 같다면 Map객체에서 가입순서를 가지고와서 정렬의 기준으로 삼는다.

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);

let client = [];
for(let i = 1; i <= n; i++){
    let temp = input[i].split(' ');
    client.push(temp);
}

// 가입순서를 확인하기위해 이름과 가입순서로 map 생성
// 이름의 중복이 없다는 가정하에
let joinMap = new Map();
for(let i = 0; i < n; i++){
    joinMap.set(client[i], i);
}

// 나이가 같다면 가입순서로 정렬
client.sort((a, b) => {
    if(a[0] != b[0]) return a[0] - b[0]
    else return joinMap.get(a[1]) - joinMap.get(b[1]);
});

let result = '';
for(const x of client)
    result += x[0] + ' ' + x[1] + '\n';

console.log(result);