Skip to main content

๐Ÿš€ 4.ย Median of Two Sorted Arrays

๋ฌธ์ œ๋ฒˆ์—ญ(OpenAI)โ€‹

ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ m๊ณผ n์ธ ๋‘ ์ •๋ ฌ๋œ ๋ฐฐ์—ด nums1๊ณผ nums2๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ๋ฐฐ์—ด์˜ ์ค‘์•™๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

์ „์ฒด ์‹คํ–‰ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log (m+n))์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ 1:

์ž…๋ ฅ: nums1 = [1,3], nums2 = [2]
์ถœ๋ ฅ: 2.00000
์„ค๋ช…: ๋ณ‘ํ•ฉ๋œ ๋ฐฐ์—ด์€ [1,2,3]์ด๊ณ  ์ค‘์•™๊ฐ’์€ 2์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ 2:

์ž…๋ ฅ: nums1 = [1,2], nums2 = [3,4]
์ถœ๋ ฅ: 2.50000
์„ค๋ช…: ๋ณ‘ํ•ฉ๋œ ๋ฐฐ์—ด์€ [1,2,3,4]์ด๊ณ  ์ค‘์•™๊ฐ’์€ (2 + 3) / 2 = 2.5์ž…๋‹ˆ๋‹ค.

์ œ์•ฝ ์กฐ๊ฑด:

  • nums1.length == m
  • nums2.length == n
  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • 106 <= nums1[i], nums2[i] <= 106

ํ’€์ด๋ฒ•โ€‹

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ๊ทธ๋ƒฅ ๋ฆฌ์ŠคํŠธ ๋‘๊ฐœ๋ฅผ ํ•ฉ์น˜๊ณ  nums = nums1 + nums2

nums๋ฅผ ์†ŒํŒ…ํ•˜๊ณ 

len(nums)๊ฐ€ ์ง์ˆ˜์ด๋ฉด ์˜ˆ๋ฅผ๋“ค์–ด 4๋ฉด 4/2, 4/2 + 1 ์— ์œ„์น˜ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๊ณ 

len(nums)๊ฐ€ ํ™€์ˆ˜์ด๋ฉด ์˜ˆ๋ฅผ๋“ค์–ด 5๋ฉด 3์˜ ์œ„์น˜ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋จ

๐Ÿšฉํ•ด๊ฒฐ

from typing import List

class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
nums = nums1 + nums2
nums.sort()
if len(nums) % 2 == 0:
return (nums[len(nums) // 2] + nums[len(nums) // 2 - 1]) / 2
else:
return nums[len(nums) // 2]