본문 바로가기
자바스크립트(JavaScript)/프로그래머스 문제풀기

[programmers - js] 배열의 유사도

by yerica 2024. 12. 16.

 

나의 풀이

좀 무식하게 푼듯,,,

function solution(s1, s2) {
    let arrNum = 0;
    for (let i = 0; i < s1.length; i++){
        for(let k = 0; k < s2.length; k++){
            if(s1[i] == s2[k]) arrNum += 1;
        }
    }
    return arrNum;
}

 

다른 사람의 풀이

filter 와 includes

filter 메서드는 배열에서 특정 조건을 만족하는 값들만 남기는 메서드이고,
includes 메서드는 배열에 특정 값이 포함되어 있는지 확인하는 메서드이다. 

function solution(s1, s2) {
    const intersection = s1.filter((x) => s2.includes(x));
    return intersection.length;
}


s1.filter 메서드 안에서 배열 s1의 각 요소 x에 대해 s2.includes(x) 조건을 확인하여 s2에 포함된 요소들만 걸러낸다. 조건을 만족하는 요소만 intersection 배열에 저장된다.
이후 length를 통해 갯수를 파악했다.

 

set 객체 사용
자바스크립트에서 set 객체유일한 값만 저장하는 특성을 가지고 있다.
이러한 특성을 살려 배열 두개를 한 배열로 복사한뒤 set 객체로 중복된 값을 삭제하고 배열값의 차이를 보는 방법을 사용했다.
function solution(s1, s2) {
  const concat = [...s1, ...s2];
  const setConcat = Array.from(new Set(concat));

  return concat.length - setConcat.length;
}​