Algorithm/문제

26. 공통 원소 구하기

챛채 2023. 7. 24. 16:39

25번과 유사한 문제

A, B 두 집합을 먼저 오름차순 정렬해둔 후 arr1[p1] < arr2[p2]면 p1(작은 수)을 하나 증가시킨다.

arr1[p1] == arr2[p2]인 경우는 answer에 값을 저장 후 둘 다 동시에 증가시킨다.

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {

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

        int p1 = 0, p2 = 0;
        while(p1<n && p2<m) {
            if (arr1[p1] == arr2[p2]) {
                answer.add(arr1[p1++]);
                p2++;
            }
            else if (arr1[p1] < arr2[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[] arr1 = new int[n];
       for (int i = 0; i < n; i++) {
           arr1[i] = kb.nextInt();
       }
       int m = kb.nextInt();
       int[] arr2 = new int[m];
       for (int i = 0; i < m; i++) {
           arr2[i] = kb.nextInt();
       }
       for (int x : T.solution(n, m, arr1, arr2)) System.out.print(x + " ");
   }
}