코드
import java.util.*;
class 교집합_ {
public static void main(String[] args){
ArrayList<Integer> answer = new ArrayList<>();
ArrayList<Integer> answer2 = new ArrayList<>();
int [] a = new Random().ints(20, 0, 100).sorted().toArray();
int [] b = new Random().ints(20, 0, 100).sorted().toArray();
int p1=0,p2=0,count1=0,count2=0;
while(p1<a.length&&p2<b.length) {
if(a[p1]==b[p2]) {
answer.add(a[p1]);
p1++;
p2++;
}else if(a[p1]<b[p2]) {
p1++;
}else {
p2++;
}
count1++;
}
for(int i=0;i<a.length;i++) {
for(int j=0;j<b.length;j++) {
count2++;
if(a[i]==b[j]) {
answer2.add(a[i]);
break;
}
}
}
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(answer);
System.out.println(answer2);
System.out.println(count1);
System.out.println(count2);
}
}
결과
[1, 7, 10, 10, 13, 22, 26, 31, 32, 34, 44, 48, 57, 57, 66, 69, 79, 82, 88, 92]
[2, 6, 8, 19, 31, 33, 35, 40, 49, 59, 60, 60, 61, 63, 65, 73, 78, 88, 90, 99]
[31, 88]
[31, 88]
37
383
반복 횟수 차이가 극명하다....
가져오기 java.util.*;
교집합_ {
공개 정적 무효 메인(문자열[] 인수){
ArrayList<정수> 답변 = 새로운 ArrayList<>();
ArrayList<정수> answer2 = 새로운 ArrayList<>();
int [] a = 새로운 Random().ints(20, 0, 100).sorted().toArray();
int [] b = 새로운 Random().ints(20, 0, 100).sorted().toArray();
정수 p1=0,p2=0,count1=0,count2=0;
동안(p1<a.length&&p2<b.length) {
if(a[p1]==b[p2]) {
답변.add(a[p1]);
p1++;
p2++;
} else if(a[p1]<b[p2]) {
p1++;
}또 다른 {
p2++;
}
카운트1++;
}
for(int i=0;i<a.length;i++) {
for(int j=0;j<b.length;j++) {
카운트2++;
if(a[i]==b[j]) {
answer2.add(a[i]);
부서지다;
}
}
}
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(답변);
System.out.println(답변2);
System.out.println(count1);
System.out.println(count2);
}
}
'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글
연속된 자연수의 합 (0) | 2022.11.25 |
---|---|
연속부분수열 (0) | 2022.11.23 |
두배열합치기 (0) | 2022.11.17 |
중복문자제거 (0) | 2022.11.14 |
격자판 최대합 (0) | 2022.11.12 |