알고리즘/코딩테스트 공부

5-2 공통원소 구하기

YG - 96년생 , 강아지 있음, 개발자 희망 2021. 12. 1. 20:09

문제

A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로
그램을 작성하세요.

풀이

function solution(arr1, arr2) {
  let answer = [];
  arr1.sort((a, b) => a - b);
  arr2.sort((a, b) => a - b);
  let n = arr1.length;
  let m = arr2.length;
  let p1 = (p2 = 0);
  while (p1 < n && p2 < m) {
    if (arr1[p1] === arr2[p2]) {
      answer.push(arr1[p1]);
      p1++;
      p2++;
    } else {
      if (arr1[p1] <= arr2[p2]) {
        p1++;
      } else p2++;
    }
  }

  return answer;
}

let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));

투포인터를 이용해서 풀었습니다. 

다른 풀이

function solution(arr1, arr2) {
  let answer = [];
  arr1.sort((a, b) => a - b);
  arr2.sort((a, b) => a - b);
  let n = arr1.length;
  let p1 = 0;
  while (p1 < n) {
    if (arr2.indexOf(arr1[p1]) !== -1) answer.push(arr1[p1]);
    p1++;
  }

  return answer;
}

let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));

indexOf 를 이용해서 풀었습니다.