문제 설명
Easy
- 감소하지 않는 순서로 정렬된 두 개의 정수 배열 nums1 및 nums2가 제공된다.
- 각각 nums1 및 nums2의 요소 수를 나타내는 두 개의 정수 m 및 n이 제공됩니다.
- nums1과 nums2를 감소하지 않는 순서로 정렬된 단일 배열로 병합합니다.
- 최종 정렬된 배열은 함수에 의해 반환되지 않고 대신 배열 nums1 내부에 저장되어야 합니다. 이를 수용하기 위해 nums1의 길이는 m + n입니다.
- 여기서 첫 번째 m 요소는 병합해야 하는 요소를 나타내고 마지막 n 요소는 0으로 설정되므로 무시해야 합니다. nums2의 길이는 n입니다.
**문제에서 요구하는 풀이는 새로운 배열을 생성하지 않고, 제시된 nums1과 nums2의 배열만을 이용하여 풀이를 해야하며 Output은 nums1 배열로 한다.
그리고 반환되는 nums1의 길이는 m+n이라 제시되었으니, nums1 = [1, 2, 3, 0, 0, 0]에 있는 인수 0을 nums2 배열의 인수로 변경해서 넣고 최종 요구사항인 오름차순으로 정렬하여 반환해야한다.
접근
var merge = function(nums1, m, nums2, n) {
let cnt = 0;
//for문을 통해 nums1 배열 내 요소에 하나씩 접근한다.
for (let i=0; i<nums1.length; i++) {
//현재 들어있는 인수 외 0에 접근해야 하므로 배열 길이인 변수 m을 이용하여, i >= m 조건을 설정한다.
if (i >= m) {
//예로 m이 3이라면, 4번째 ~ 6번째 인수를 nums2의 1번째 ~ 3번째 인수로 splice 함수를 통해 변경한다.
nums1.splice(i,1, nums2[cnt]);
cnt++;
}
}
//최종적인 형태는 오름차순으로 배열 정렬하여 반환한다.
return nums1.sort((a,b) => a-b);
};
'프론트엔드 개발[Front-End Development] > Coding Test' 카테고리의 다른 글
[CT-L] 49. Group Anagrams (0) | 2022.11.22 |
---|---|
[CT-L] 347. Top K Frequent Elements (0) | 2022.11.21 |
[CT-L] 215. Kth Largest Element in an Array (0) | 2022.11.21 |
[CT-L] 122. Best Time to Buy and Sell Stock II (0) | 2022.11.21 |
[CT-L] 1480. Running Sum of 1d Array (0) | 2022.11.14 |