[알고리즘] 3. 배열합치기

📌풀이

오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성해라.

📌입출력예시

  • 배열의 길이 : 3
    1 3 5
  • 배열의 길이 : 5
    2 3 6 7 9

🔑KEY
sort() 함수는 쓰지 않고 투 포인터(Two Pointer) 알고리즘을 사용.

  • 투 포인터(Two Pointer)
    두 개의 포인터를 조작하여 원하는 결과를 얻는 알고리즘
    시작점과 끝점이 첫번째 원소의 인덱스를 가리키도록 한다.
    현재 부분 합이 M 과 같다면 포인터의 index 를 증가시킨다.

📌풀이

🎨첫번째 풀이

//두 배열 합치기
function solution(arr1 , arr2){
    let answer = [];
    n = arr1.length;
    m = arr2.length;
    let p1=p2=0;        //포인터 정의

    while(p1 < n && p2 < m){
        console.log(arr1[p1])
        console.log(arr2[p2])
        if(arr1[p1] < arr2[p2]) answer.push(arr1[p1++])
        else answer.push(arr2[p2++])
    }

    while(p1<n) answer.push(arr1[p1++]);
    while(p2<m) answer.push(arr2[p2++]);

    return answer;
}

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

좋은 웹페이지 즐겨찾기