본문 바로가기
알고리즘/문자열, 정렬

[알고리즘] 공통원소 구하기 with Java

by VIPeveloper 2022. 3. 10.
반응형

이번문제 역시 포인터를 활용한 문제이다. 먼저 정렬을 해준다는 것이 차이점이었다.

오늘 배운 것

1. 문제 풀이

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

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        int m = kb.nextInt();
        int[] arr2 = new int[m];
        for (int i = 0; i < m; i++) {
            arr2[i] = kb.nextInt();
        }
        solution(arr,arr2);
    }

    private static void solution(int[] arr, int[] arr2) {
        arr = Arrays.stream(arr).sorted().toArray();
        arr2 = Arrays.stream(arr2).sorted().toArray();
        ArrayList<Integer> answer = new ArrayList<>();
        int p1=0,p2=0;
        while(p1 < arr.length && p2<arr2.length){
            if(arr[p1]==arr2[p2]){
                answer.add(arr[p1]);
                p1++;
                p2++;
            }else if(arr[p1] < arr2[p2]){
                p1++;
            }else{
                p2++;
            }
        }
        for (int i = 0; i < answer.size(); i++) {
            System.out.print(answer.get(i)+" ");
        }
    }
}
반응형