Algorithm/inflearn

★공통원소 구하기

마닐라 2021. 9. 13. 20:56

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public ArrayList<Integer> solution(int n, int m, int[] a, int[] b){
        ArrayList<Integer> answer = new ArrayList<>();
        //오름차순 정렬
        Arrays.sort(a);
        Arrays.sort(b);

        int p1 = 0, p2 = 0; //포인터
        //왜 배열이 끝나면 끝나는 가를 생각할것.
        while (p1 < n && p2 < m) { // 둘 중 배열이 끝나면 끝
            if(a[p1] == b[p2]) { // 공통 원소를 찾았으면 둘 다 증가
                answer.add(a[p1++]);
                p2++;
            }
            else if(a[p1] < b[p2]) p1++; //작은 쪽을 증가
            else p2++;
        }

        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb =new Scanner(System.in);
        int n = kb.nextInt();
        int[] a = new int[n];
        for(int i = 0; i < n; i++) {
            a[i] = kb.nextInt();
        }
        int m = kb.nextInt();
        int[] b = new int[m];
        for(int i = 0; i < m; i++) {
            b[i] = kb.nextInt();
        }

        for(int x : T.solution(n, m, a, b)) System.out.print(x + " ");

    }
}

'Algorithm > inflearn' 카테고리의 다른 글

연속된 자연수의 합(two pointers)  (0) 2021.09.14
★연속 부분수열  (0) 2021.09.14
#★두 배열 합치기  (0) 2021.09.13
★★멘토링  (0) 2021.09.10
★임시반장 정하기  (0) 2021.09.10