코드

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

+ Recent posts