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(x + " ");
}
}
}
'코딩테스트 > 기초' 카테고리의 다른 글
28. 연속 부분수열 (1) | 2024.12.20 |
---|---|
27. 최대 매출 (0) | 2024.12.17 |
24. 멘토링 (1) | 2024.12.15 |
23. 임시반장 정하기 (0) | 2024.12.14 |
22. 봉우리 (0) | 2024.12.14 |