[인프런 | JS] 공통원소 구하기

파송송계란빡 ㅣ 2023. 2. 12. 19:32

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4

 

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., - 강의

www.inflearn.com

 

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

 

▣ 입력설명
첫 번째 줄에 집합 A의 크기 N(1<=N<=30,000)이 주어집니다.
두 번째 줄에 N개의 원소가 주어집니다. 원소가 중복되어 주어지지 않습니다.
세 번째 줄에 집합 B의 크기 M(1<=M<=30,000)이 주어집니다.
네 번째 줄에 M개의 원소가 주어집니다. 원소가 중복되어 주어지지 않습니다.
각 집합의 원소는 1,000,000,000이하의 자연수입니다.

 

▣ 출력설명
두 집합의 공통원소를 오름차순 정렬하여 출력합니다.

 

▣ 입력예제 1
5
1 3 9 5 2
5
3 2 5 7 8

 

▣ 출력예제 1
2 3 5

 

 

//1. p1, p2 0으로 세팅
//2. arr1, arr2 정렬
//3. p1 와 p2 둘 중 끝까지 가는 경우 종료
//4. arr1[p1] === arr2[p2] 비교해서 동일한거 answer에 push
//5. arr1[p1], arr2[p2] 비교해서 더 작은쪽 p ++

function solution(arr1, arr2) {
    const answer = [];
    let p1 = 0,
        p2 = 0;

    arr1.sort((a, b) => a - b);
    arr2.sort((a, b) => a - b);

    while (p1 <= arr1.length && p2 <= arr2.length) {
        if (arr1[p1] === arr2[p2]) {
            answer.push(arr1[p1]);
        }

        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));

//1. p1, p2 0으로 세팅
//2. arr1, arr2 정렬
//3. p1 와 p2 둘 중 끝까지 가는 경우 종료
//4. arr1[p1] === arr2[p2] 비교해서 동일한거 answer에 push
//5. arr1[p1], arr2[p2] 비교해서 더 작은쪽 p ++

 

코드 개선

function solution(arr1, arr2) {
    const answer = [];
    let p1 = 0,
        p2 = 0;

    arr1.sort((a, b) => a - b);
    arr2.sort((a, b) => a - b);

    while (p1 <= arr1.length && p2 <= arr2.length) {
        if (arr1[p1] < arr2[p2]) {
            p1++;
            continue;
        }
        if (arr1[p1] === arr2[p2]) {
            answer.push(arr1[p1]);
        }
        p2++;
    }

    return answer;
}

let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));
[인프런 | JS] 공통원소 구하기