작성
·
339
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 방식으로 푸는게 효율성 측면에서 좋습니다.