A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요.
- 배열의 길이 : 5
1 3 9 5 2- 배열의 길이 : 5
3 2 5 7 8
🔑KEY
투 포인터(Two Pointer) 알고리즘
🎨첫번째 풀이
//공통 원소 구하기
function solution(arr1, arr2){
let answer = [];
n = arr1.sort().length;
m = arr2.sort().length;
let l = 0;
let P1 = P2 = 0;
if( n <= m ) l = n // 배열의 크기가 작을 경우를 고려
else l = m
while(P1 < l && P2 < l){
if(arr1[P1] === arr2[P2]) {
answer.push(arr1[P1++])
P2 ++;
} else{
P1 ++;
}
}
return answer;
🎈최종풀이
//공통 원소 구하기
function solution(arr1, arr2){
let answer = [];
n = arr1.sort().length;
m = arr2.sort().length;
let l = 0;
let P1 = P2 = 0;
if( n <= m ) l = n // 배열의 크기가 작을 경우를 고려
else l = m
while(P1 < l && P2 < l){
if(arr1[P1] === arr2[P2]) {
answer.push(arr1[P1++])
P2 ++;
}else if (arr1[P1] < arr2[P2]){
P1 ++;
} else{
P2 ++;
}
}
return answer;
- 배열을 이미 sort 했기 때문에 "작을 경우" 에 대한 경우의 수를 생각하지 못함