원래는 slice를 통해 2번째 줄부터 n+1번째까지를 배열에 저장하고 sort한 후 다시 for문을 돌면서 indexOf를 통해 indexOf의 반환값이 -1이 아닐 경우 result에 저장하는 식으로 구현했다. 그런데 slice나 indexOf, for문 때문에인지 시간 초과가 났다..
그래서 자바스크립트의 Set을 이용해서 구현해보았다.
nSet과 mSet을 만든 후 for문을 돌면서 조건에 맞게 문자열을 각각 넣어준다. 그후 전개한 뒤 filter로 nSet의 item 중 mSet이 가지고 있는 것을 구한 후, 이를 sort()를 통해 정렬하는 식으로 구현했다.
let fs = require('fs');
const inputs = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
//const inputs = fs.readFileSync(__dirname+'/ex2.txt').toString().split('\n');
const nm = inputs[0].split(' ');
const n = Number(nm[0]);
const m = Number(nm[1]);
const nSet = new Set();
const mSet = new Set();
for (let i=1; i<inputs.length; i++) {
if (i < n+1) {
nSet.add(inputs[i]);
}
else {
mSet.add(inputs[i]);
}
}
const r = [...nSet].filter(item => mSet.has(item)).sort();
console.log(r.length);
console.log(r.join('\n'));
자바스크립트로 코테를 준비한지 한달?정도 된 것 같은데 아직도 모르는 게 많은 것 같다. 앞으로 더 열심히 해야겠다!