function solution(arr1, arr2) {
let answer = [];
for (let x of arr1) {
for (let y of arr2) {
if (x === y) answer.push(y);
}
}
answer = answer.sort((a, b) => a - b);
return answer;
}
let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));
function solution(arr1, arr2) {
let answer = [];
arr1 = arr1.sort((a, b) => a - b);
arr2 = arr2.sort((a, b) => a - b);
let p1 = 0;
let p2 = 0;
while (p1 < arr1.length && p2 < arr2.length) {
if (arr1[p1] === arr2[p2]) {
answer.push(arr1[p1]);
p1++;
p2++;
} else if (arr1[p1] > arr2[p2]) p2++;
else p1++;
}
return answer;
}
let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));
전반적으로 접근법만 듣고도 Solution 과 거의 동일하게 풀었다.
하지만 arr1, arr2를 sort할 때 배열을 바꾼다는 것을 몰라서 굳이 다시 초기화를 해 주었다
function solution(arr1, arr2) {
let answer = [];
arr1.sort((a, b) => a - b);
arr2.sort((a, b) => a - b);
let p1 = (p2 = 0);
while (p1 < arr1.length && p2 < arr2.length) {
if (arr1[p1] == arr2[p2]) {
answer.push(arr1[p1++]);
p2++;
} else if (arr1[p1] < arr2[p2]) p1++;
else p2++;
}
return answer;
}
let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));
arr.sort()
를 하면arr
를 직접 바꾸어 준다- 접근법을 듣고도 머리가 멍 했는데 직접 예시를 그려서 시뮬레이션을 돌려보니 머릿속에 느낌표가 띵 하고 떠올랐다!
앞으로는 직접 예시를 돌려보는 습관을 들여야 겠다!