거북이개발자

[인프런] 두 배열 합치기 본문

Algorithm(JavaScript)

[인프런] 두 배열 합치기

류정식 2021. 7. 6. 21:33

0. 제목

  • 두 배열 합치기

1. 문제


2. 풀이 1차

  • for 문으로 배열의 shift를 이용했다.
  •  

3. 코드 1차


function solution(arr1, arr2) {
    let answer = [];
    while (true) {
        var a = arr1[0];
        var b = arr2[0];
        if (arr1.length === 0) {
            answer = [...answer, ...arr2]
            break;
        } else if (arr2.length === 0) {
            answer = [...answer, ...arr1]
            break;
        }


        if (a >= b) {
            if (answer.includes(b) === false) {
                answer.push(arr2.shift())
            }
            else {
                arr2.shift()
            }
        }
        else {
            if (answer.includes(a) === false) {
                answer.push(arr1.shift())
            }
            else {
                arr1.shift()
            }

        }
    }




    return answer;
}

let a = [1, 3, 5];
let b = [2, 3, 6, 7, 9];
console.log(solution(a, b));

 

2. 풀이 2차

  • 2포인트 알고리즘 이용
  •  

p1, p2를 이용한다.


3. 코드 2차

 

function solution(arr1, arr2) {
    let answer = [];
    var p1=0, p2=0;
    var n1=arr1.length;
    var n2=arr2.length;

    while(p1<n1 && p2<n2){
        if(arr1[p1]>=arr2[p2]) answer.push(arr2[p2++])
        else answer.push(arr1[p1++])
    }
    
    while(p1<n1){
        answer.push(arr1[p1++])
    }
    while(p2<n2){
        answer.push(arr2[p2++])
    }


    return answer;
}

let a = [1, 3, 5];
let b = [2, 3, 6, 7, 9];
console.log(solution(a, b));
Comments