공통원소 구하기

성석민·2022년 5월 2일
1

알고리즘

목록 보기
33/72
post-thumbnail

github 전체코드

문제

A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력

풀이 과정

  1. 주어진 두 배열에 대해 pointer를 선언하고, 오름차순으로 정렬한다.
  2. pointer1와 pointer2의 요소가 같다면 pointer1, pointer2 증가 및 해당 요소를 저장한다.
  3. pointer1보다 pointer2의 요소가 더 크면 pointer1 증가 및 해당 요소를 저장한다.
  4. pointer1보다 pointer2의 요소가 더 작으면 pointer2 증가 및 해당 요소를 저장한다.
const solutionA = (arrayA, arrayB) => {
  const answer = [];

  arrayA.sort((a, b) => a - b);
  arrayB.sort((a, b) => a - b);

  let pointer1 = 0;
  let pointer2 = 0;

  while (pointer1 < arrayA.length && pointer2 < arrayB.length) {
    if (arrayA[pointer1] < arrayB[pointer2]) pointer1++;
    else if (arrayA[pointer1] > arrayB[pointer2]) pointer2++;
    else {
      answer.push(arrayA[pointer1++]);
      pointer2++;
    }
  }

  return answer;
};

const testA = solutionA([1, 3, 9, 5, 2], [3, 2, 5, 7, 8]);
console.log(testA);

틀린 부분이 있거나 보충해야 할 내용이 있다면 댓글이나 DM(sungstonemin)으로 알려주시면 감사하겠습니다😄

profile
기록하는 개발자

0개의 댓글