[프로그래머스] 배열의 유사도


문제 설명

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


제한사항

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

입출력 예

s1s2result
[“a”, “b”, “c”][“com”, “b”, “d”, “p”, “c”]2
[“n”, “omg”][“m”, “dot”]0

입출력 예 설명

입출력 예 #1

  • “b”와 “c”가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0을 return합니다.

나의 풀이

function solution(s1, s2) {
  return s1.filter((v, i) => s2.includes(v)).length;
}

나의 두번째 풀이(Code Refactoring)

function solution(s1, s2) {
  let answer = 0;
  for (i = 0; i < s1.length; i++) {
    for (j = 0; j < s2.length; j++) {
      s1[i] === s2[j] && answer++;
    }
  }
  return answer;
}

// 일반 for문으로 푸는 방법 / 이중 반복문을 써야함
// O(n^2)의 시간 복잡도

참고 할 만한 다른 사람의 코드

function solution(s1, s2) {
  let result = 0;
  s1.forEach((i) => {
    for (j of s2) i == j ? result++ : result;
  });
  return result;
}

//forEach 활용