[백준] - 1764 듣보잡 (Javascript)

밀루·2023년 10월 23일
0

BOJ

목록 보기
34/43

문제 링크

풀이과정

원래는 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'));

자바스크립트로 코테를 준비한지 한달?정도 된 것 같은데 아직도 모르는 게 많은 것 같다. 앞으로 더 열심히 해야겠다!

profile
이밀루의 도전

0개의 댓글