ALGORITHM

[JAVA] 알고리즘 : two pointers - 공통원소구하기

연듀 2022. 6. 20. 20:59
import java.util.*;

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++]); // arrayList에 추가하고 p1, p2 각각 증가 
                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+" ");
    }
}