코딩테스트/기초

26. 공통원소 구하기

누리는 귀여워 2024. 12. 15. 22:29

import java.util.*;
class Main {	
    public ArrayList<Integer> solution(int n, int[] arr1, int m, int[] arr2) {
        ArrayList<Integer> answer = new ArrayList<>();
        int p1 = 0, p2 = 0;
        // 배열 오름차순 정렬
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        while(p1 < n && p2 < m) {
        	// arr1과 arr2 값이 같으면 p1 값을 추가하고 p1, p2 ++
            if(arr1[p1] == arr2[p2]) {
                answer.add(arr1[p1++]);
                p2++;
            // p2가 p1보다 크면 p1 ++
            // 작은 값을 올려야 다음 값에서 비교 가능
            } else if(arr1[p1] < arr2[p2]) {
                p1++;
            // p1가 p2보다 크면 p2 ++
            } 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, arr1, m, arr2)) {
            System.out.print(x + " ");
        }

	}
}

 

 

import java.util.*;
class Main {    
    public ArrayList<Integer> solution(int n, int[] arr1, int m, int[] arr2) {
        ArrayList<Integer> answer = new ArrayList<>();
        int p1 = 0, p2 = 0;
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        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, arr1, m, arr2)) {
            System.out.print(+ " ");
        }

    }
}