LeetCode의 Median of Two Sorted Arrays 문제다.
정렬된 두 배열을 받았을 때 이 배열의 중앙값을 구하는 것이다. 조금 헷갈릴 수 있는 부분이 중앙값(median)은 평균(mean)과 다르다. 중앙값은 말 그대로 값들을 순서대로 정렬했을 때 그 가운데에 위치한 값을 의미한다. 홀수라면 그냥 가운데 있는 값을 고르면 되지만 짝수라면 가운데 있는 두 값의 평균을 구해야 한다.
사실 특별할 건 없고 위의 공식을 말 그대로 적용하면 된다. 어쩌면 파이썬이라 가능한 풀이일지도 모른다.
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
mergedNums = nums1
mergedNums.extend(nums2)
mergedNums.sort()
if len(mergedNums) % 2 == 1: # odd
return mergedNums[int(len(mergedNums) / 2)]
else: # even
return (mergedNums[int(len(mergedNums) / 2)] + mergedNums[int(len(mergedNums) / 2) - 1]) / 2
median의 정의를 제대로 몰랐기 때문에 한번 헤맸던 문제였다. 영어로 되어있는 LeetCode의 특성상 어쩔 수 없는 일이지만 충분히 감수할 만한 일이다.