공통원소구하기

minho·2021년 9월 18일
0

코드

function solution(arr1, arr2){
                let answer=[];
                arr1.sort((a, b)=>a-b);
                arr2.sort((a, b)=>a-b);
                let p1=p2=0;
                while(p1<arr1.length && p2<arr2.length){
                    if(arr1[p1]==arr2[p2]){
                        answer.push(arr1[p1++]);
                        //[p1++]의 뜻은 answer에 arr1[p1]을 넣고 p1++을 의미한다.
                        //answer.push(arr1[p1]);
                        //p1++이랑 같다.
                        p2++;
                    }
                    else if(arr1[p1]<arr2[p2]) p1++;
                    else p2++;
                }              
                return answer;
            }

포인트

  1. 교집합을 구하므로 어느 한쪽의 포인터가 끝까지 가면 while을 탈출하도록 한다.
  2. arr1[p1] 과 arr2[p2]를 비교했을때 더 작은쪽의 p1이나 p2를 ++ 해준다.
profile
Live the way you think

0개의 댓글