🗃️javascript/코테 프레임 문제

5-1 두 배열 합치기

하얀성 2023. 9. 26. 08:50

<제출답안>

코드 결과는 맞게 잘 나온다. 챗gpt도 틀린건 아니라한다. 

하지만 코드가 비효율 적이다.

병합정렬을 사용해서 미리 코드들을 정렬한뒤 병합하면 훨씬 더 효율적이라 한다. 

function solution(arr1, arr2){
  for(let x of arr1){
    arr2.push(x)
  }
  sortedArr = arr2.sort((a,b) => a-b)
  return sortedArr
}
           
let a=[1, 3, 5];
let b=[2, 3, 6, 7, 9];
console.log(solution(a, b));

코드를 보니 아.. 문제 조건이 오름차순으로 주어지는 구나.

내 답은 오름차순으로 정렬된 것을 다시 정렬하는 방식이니 비효율적이라고 하는 것이었다.

 

하나씩 앞에서 부터 코드를 비교해 가면서 코드를 넣되, 한쪽만 코드가 남아 있을경우 그 코드만 쭉 뒤에 넣으면 그대로 정렬이 완성되는 것이다. 

function solution(arr1, arr2){
  function mergeSortedArrays(arr1, arr2) {
    let result = [];
    let i = 0; // arr1의 인덱스
    let j = 0; // arr2의 인덱스
   
    while (i < arr1.length && j < arr2.length) {
        if (arr1[i] < arr2[j]) {
            result.push(arr1[i]);
            i++;
        } else {
            result.push(arr2[j]);
            j++;
        }
    }
   
    // arr1에 남아있는 원소가 있을 경우
    while (i < arr1.length) {
        result.push(arr1[i]);
        i++;
    }
   
    // arr2에 남아있는 원소가 있을 경우
    while (j < arr2.length) {
        result.push(arr2[j]);
        j++;
    }
   
    return result;
}
}
           
let a=[1, 3, 5];
let b=[2, 3, 6, 7, 9];
console.log(solution(a, b));