[js] 배열의 유사도 (lv.0)

sookyoung.k·2024년 6월 3일
post-thumbnail

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

나의 풀이

function solution(s1, s2) {
    let answer = 0;
    s2.forEach((el) => {
        for(v of s1) {
            if (el === v) answer++;
        }
    })
    return answer;
}
  • answer 변수를 0으로 초기화
  • s2.forEach()를 통해 s2의 각 문자(el)에 대해서 반복 실행한다.
  • s2의 각 문자에 대해서 s1의 문자를 순회한다. 만약 s1의 문자가 s2의 현재 문자와 같다면 answer를 1 증가시킨다.

다른 풀이 1

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

와 훨씬 간단하게... 그냥 filter() 메서드를 써서 s2.includes()인 것들만 남기고 배열의 길이를 반환한다.

다른 풀이 2

function solution(s1, s2) {
  const concat = [...s1, ...s2];
  const setConcat = Array.from(new Set(concat));

  return concat.length - setConcat.length;
}
  • s1과 s2의 배열을 합친다. (concat)
  • Set()을 통해서 중복을 제거한 후 배열로 변환한다. (setConcat)
  • 원래 배열의 길이에서 중복을 제거한 배열의 길이를 뺀 후 중복된 문자의 개수를 계산하여 반환한다.
profile
영차영차 😎

0개의 댓글