문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
풀이
let fs = require("fs");
let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
var [nonSee , nonHear] = input[0].split(" ").map(Number);
answer = [];
var map = new Map();
for(let i = 1; i < nonHear ; i++ ){
map.set( input[i] , 1 )
}
for(let i = nonHear; i <input.length; i++){
if(map.has(input[i])){
map.set(input[i] , map.get(input[i]) + 1);
}
}
console.log(map)
var arrMap = [...map]
for(let x of arrMap){
var [a,b] = x
if( b == 2){
answer.push(a);
}
}
console.log(answer.length)
if(answer.length>0){
console.log(answer.sort().join("\n"))
}
우선map 에 듣도못한 사람을 추가해주고 , 그다음 보도못한사람을 추가하는데 만약 map에 똑같은 key를 가진 인원이 있다면 value에 1을 더해주는 방식으로 진행했다. 전개연산자를 이용해 map객체를 배열로 만들어주고 value값이 2라면 answer배열에 key값을 추가해주었다 . 만약 answer 배열의 길이가 0이라면 듣도보도못한사람이 없다는 뜻이므로 0만 리턴해주고 , 길이가 0보다 크다면 answer 의 길이와 배열을 정렬하여 한줄씩 출력해주었다.
'알고리즘' 카테고리의 다른 글
[BOJ]1934 - 최소공배수(JS) (0) | 2024.07.19 |
---|---|
[BOJ]10816 - 숫자 카드2 (JS) (0) | 2024.07.18 |
[BOJ]7785 - 회사에있는사람(JS) (1) | 2024.07.12 |
[BOJ]2839 - 설탕 배달(JS) (0) | 2024.07.07 |
[알고리즘]프로그래머스 LV.1 - 바탕화면 정리 (0) | 2024.07.02 |