본문 바로가기
Coding Test/JavaScript

[Javascript] (백준 1764) 듣보잡

by Chaedie 2022. 6. 26.
728x90

[Javascript] (백준 1764) 듣보잡

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

//* 인풋 (디폴트)
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().split('\n');

//* 인풋 (커스텀)
const n = +input[0].split(' ')[0];
const m = +input[0].split(' ')[1];

//* 함수 콜 (고정)
const answer = solution(n, m);
console.log(answer);

//* 로직함수
function solution(n, m) {
  const set1 = new Set();
  for (let i = 1; i < n + 1; i++) {
    set1.add(input[i].trim());
  }

  const set2 = new Set();
  for (let i = 1 + n; i < m + n + 1; i++) {
    set2.add(input[i].trim());
  }

  const result = [];
  for (let word of set1) {
    if (set2.has(word)) {
      result.push(word);
    }
  }
  result.unshift(result.length);

  return result.sort().join('\n');
}

Javascript에는 Set의 교집합, 합집합 등의 메서드가 없습니다. 따라서 위처럼 for문으로 들어있는지 확인하며 풀었습니다.

그런데 MDN의 set을 보니 filter를 이용해 교집합을 흉내 낼 수 있다고 나와있네요. 그래서 따라해 봤습니다.

filter로 교집합 따라하기

    const resultSet = new Set([...set1].filter((x) => set2.has(x)));
  const result = new Array(...resultSet);
  result.unshift(result.length);

  return result.sort().join('\n');

댓글