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 |