[node.js] 백준 1764번 듣보잡

bjyyyyy·2022년 9월 15일

문제보기

const fs = require("fs");
const { join } = require("path");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let [N, M] = input
    .shift()
    .split(" ")
    .map((item) => +item);

let peopleN = new Set();
let peopleM = new Set();

for (let i = 0; i < input.length; i++) {
    if (i < N) {
        peopleN.add(input[i]);
    } else {
        peopleM.add(input[i]);
    }
}
let result = [];
peopleN.forEach((item) => {
    if (peopleM.has(item)) {
        result.push(item);
    }
});
result.sort();

console.log(result.length);
console.log(result.join("\n"));

풀이
1. peopleN과 peopleM을 빈 set객체로 만든다.
2. 입력값 첫줄을 제외한 요소를 반복문 실행하여 N보다 작으면 peopleN에 추가하고 아니면 peopleM에 추가한다.
3. 둘중 어떤걸 forEach 하든 상관없으며 두 set객체의 교집합을 구하여 result 배열에 push 해준다.
4. result의 길이와 result의 각 요소를 join('\n')으로 한줄씩 넘겨서 출력한다.

0개의 댓글