오늘의 코딩 테스트 한줄 - 배열의 유사도

Edwin·2023년 1월 31일
0
post-thumbnail

📝 문제 : 배열의 유사도

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

  • 예시
    s1 : ["a", "b", "c"]
    s2 : ["com", "b", "d", "p", "c"]
    결과 : "b", "c"가 겹치기에, 2가 return 되면 정답니다.

1) 구글링 문제 풀이

문제는 문자열 사이의 교집합을 구하라는 문제였다. 문제는 교집합을 어떻게 구했었지;;; 이다.

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

1) s1.filter(x => {}) : s1의 parameter(x)를 받아서 함수를 통해서 비교해본다. 이렇게 되면 배열에 있는 인자들이 하나씩 들어와서 함수를 통해서 작업이 될 것이다.

2) s1.filter(x => s2.includes(x)) : 함수의 내용은 이와 같다. s2의 배열에서 s1의 매개변수로 들어온 x의 값이 포함하는 것이 있느냐이다. 있다면 해당 내용을 배열데이터로 반환할 것이다.

3) 문제는 일치하는 값을 찾는 것임으로 베열의 길이 배열.length을 선언하면 값을 얻을 것이다.

2) filter가 아닌 for문으로 문제에 도달하기

function solution(s1, s2) {
    var answer = [];
    for (let i = 0; i < s1.length; i++){
        for (let j = 0; j < s2.length; j++){
            if(s1[i] === s2[j]) {
            answer.push(s1[i])}
            }
        }
   console.log(answer.length)
   return answer.length;    
}
    
solution([1,2,3,4,5], [1,2])

구글링이 아니어도, 충분히 내가 배운 문법으로도 이를 처리할 수 있었다. 그런데 이를 고민해보지 않은 나는 반성이 필요할 것 같다. 처음부터 filter의 개념을 알지만, 정확하게 활용하지 못하고, 해결하지 않고 쉽게 구글링으로 문제를 풀었던 것에 대해서 반성한다.

profile
신학전공자의 개발자 도전기!!

0개의 댓글