[백준/BOJ] 1764번 듣보잡 [Javascript / Node js]

2023. 10. 6. 16:13코딩 테스트 (BOJ)

https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

 

문제 해석

첫번째 줄에는 N과 M 의 개수가 제시되고, 다음줄부터는 N줄의 첫 번째 집합, 그리고 첫 번째 집합의 입력이 끝나면 두번째 집합. 그리고 듣도 보도 못한 사람 즉, 듣보잡은 두 집합에 모두 포함되어 있어야 하니 두 집합중 하나의 집합을 잡고 나머지 하나의 집합의 요소가 몇개 들어있는지를 세어주면 되는 문제다.

 

유의사항 1. 개수와 함께 해당 요소들도 !사전순으로 출력해줘야 한다.

 

전체코드

peopleN (듣도 못한 사람의 집합)은 보도 못한 사람중 어떤 사람들이 속해 있는지 검사할 때 처리 시간을 줄이기 위해서 has함수를 사용하려고 배열이 아닌 object로 생성했다.

 

그리고 peopleNM (듣도보도 못한 사람의 집합)은 배열로 생성해주어서 sort()함수를 사용해주어 사전순으로 출력할 수 있도록 정렬했다.

 
const fs = require("fs");

const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(item=> item.replace("\r", ""));

const NM = input[0].split(" ");
const N = Number(NM[0]);
var cnt = 0;
var str = "";

input.shift();
var peopleNM = [];
var peopleN = new Map([]);

for(let i=0; i<N; i++){
    peopleN.set(input[i]);
}

for(let i=N; i<input.length; i++){
    if(peopleN.has(input[i])){
        peopleNM.push(input[i]); //듣도 못한 사람에 속해 있는 보지도 못한 사람을 peopleNM(듣도보도 못한 사람)에 넣어줌
        cnt++;
    }
}

answer = peopleNM.sort(); //사전순으로 출력해주기 위해

console.log(cnt);
console.log(answer.join("\n"));