시작에 앞서, LeetCode가 프로그래머스, 백준 코딩테스트와의 차이점이 있다면 in-place
를 요구합니다.
반환이 아니라 전달받은 리스트 자체를 수정하는 것이고 메모리 사용량을 채점 요소로 여깁니다.
이런 점을 통해서 메모리 사용량을 최소화하는 방향까지 고려해보는 코드를 작성해볼 수 있는 연습시간을 가질 수 있을 듯 합니다..
You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.
Merge nums1 and nums2 into a single array sorted in non-decreasing order.
The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.
Constraints:
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
두 문자열을 받아서 병합한 뒤 정렬하는 문제입니다. return
값은 없이 nums2를 nums1에 병합하여 정렬하는 방식을 요구합니다.
제가 생각한 코드는 다음과 같습니다.
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
nums1[m:] = nums2
nums1.sort()
매우 간단해 보이지만 개인적으로 나름 몇 가지 장점이 들어가 있다고 생각하는 코드입니다.
list.sort()
방식으로 in-place 조건을 유지합니다.쉬운 문제고 조건도 어렵지 않아서 크게 고민할 부분은 없었던 문제입니다.