• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

이런식으로 p1 p2를 안써도 괜찮을까요 ?

23.05.17 11:43 작성 조회수 261

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

바로 shift()로 빼주었는데 이래도 괜찮은걸까요 ?

 

 

 

const input = `3
1 3 5
5
2 3 6 7 9`.split("\n");

let arr1 = input[1].split(" ").map((str) => Number(str));
let arr2 = input[3].split(" ").map((str) => Number(str));

function solution(arr1, arr2) {
  let answer = [];
  while (arr1.length && arr2.length) {
    if (arr1[0] < arr2[0]) {
      answer.push(arr1.shift());
    } else {
      answer.push(arr2.shift());
    }
  }

  while (arr1.length) {
    answer.push(arr1.shift());
  }

  while (arr2.length) {
    answer.push(arr2.shift());
  }

  return answer;
}
console.log(solution(arr1, arr2));

답변 1

답변을 작성해보세요.

0

안녕하세요^^

자바립트의 배열 메서드인 shift는 배열의 맨 앞 자료를 삭제하면서 가져오는데 이 때 뒤쪽 자료들이 앞쪽으로 한 칸씩 이동하는 연산이 이루어 지므로 시간복잡도는 O(n)입니다.

이 문제는 p1, p2를 쓰는 two pointers 방식으로 푸는게 효율성 측면에서 좋습니다.