나의 풀이
function solution(arr1, arr2) {
let answer = [];
let n = arr1.length;
let m = arr2.length;
let p1 = p2 = 0;
// for (let i = 0; i < n; i++) {
// if (arr1[i].includes(arr2)) {
// answer.push(arr[i])
// }
// }
let newArr1 = arr1.sort((a, b) => a - b);
let newArr2 = arr2.sort((a, b) => a - b);
console.log(newArr1)
console.log(newArr2)
while (p1 < n && p2 < m) {
// console.log(newArr2[p2])
if (newArr1[p1] < newArr2[p2]) newArr1[p1++];
else if (newArr1[p1] = newArr2[p2]) {
answer.push(newArr2[p2])
} else {
newArr2[p2++];
}
}
return answer;
}
let a = [1, 3, 9, 5, 2];
let b = [3, 2, 5, 7, 8];
console.log(solution(a, b));
우선 나는 위처럼 풀었는데 invalid array length 로 오류가 나왔었다.
좀 더 원인을 알아보니 newArr1[p1++] 이런부분을 그냥 p1++이런식으로 작성해야 했었다.
풀이식은 정답과 거의 유사
모범 답안
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));
풀이 포인트1) p2++ 처럼 p2도 같이 증가해줘야 한다는점
2) sort는 문자열로 나오게 함으로서 2자리이상의 숫자일때 sort에 조건을 안적어주면 1 10 2 이런식으로 오름차순을해도 잘 출력이 잘되지않을수 있음으로 조건을 적어주자
3) arr1[p1++] 이렇게 적어서 p1포함해서 ++ 해준다.
'코딩테스트 > JavaScript' 카테고리의 다른 글
[코딩테스트] 연속 부분수열 2 (0) | 2023.12.31 |
---|---|
[코딩테스트] 연속 부분수열1 (0) | 2023.12.30 |
[코딩테스트] 공통원소 구하기 (2) | 2023.12.29 |
[코딩테스트] 졸업 선물 (0) | 2023.12.27 |
[코딩테스트] 멘토링 (2) | 2023.12.27 |