Open utterances-bot opened 8 months ago
이 코드는 두 정렬된 배열 nums1
와 nums2
의 중앙값을 찾는 함수입니다. if
절은 두 배열에서 다음에 고려할 원소를 결정하는 데 사용됩니다. 이해를 돕기 위해 if
절을 분석해 보겠습니다.
if (i < nums1.length && (j >= nums2.length || nums1[i] < nums2[j])) {
current = nums1[i++];
} else {
current = nums2[j++];
}
if
절의 각 부분은 다음과 같은 조건을 확인합니다:
i < nums1.length
: 인덱스 i
가 nums1
배열의 범위 내에 있는지 확인합니다. 즉, nums1
배열에서 아직 고려하지 않은 원소가 남아 있는지 확인합니다.j >= nums2.length
: 인덱스 j
가 nums2
배열의 범위를 벗어났는지 확인합니다. 즉, nums2
배열의 모든 원소가 이미 고려되었는지 확인합니다.nums1[i] < nums2[j]
: nums1
배열의 현재 원소가 nums2
배열의 현재 원소보다 작은지 확인합니다.if
절의 조건은 다음 두 가지 경우 중 하나에 해당할 때 true
가 됩니다:
nums1
배열에 아직 고려하지 않은 원소가 있고 (i < nums1.length
), nums2
배열의 모든 원소가 이미 고려되었거나 (j >= nums2.length
) nums1
의 현재 원소가 nums2
의 현재 원소보다 작을 때 (nums1[i] < nums2[j]
).nums1
의 다음 원소가 nums2
의 다음 원소보다 작거나, nums2
의 원소가 더 이상 남아 있지 않을 때입니다.이 조건에 따라 current
변수는 두 배열의 원소 중 다음으로 작은 값을 가집니다. 이렇게 하면 두 배열의 원소들을 실제로 병합하지 않고도 순차적으로 접근하여 중앙값을 찾을 수 있습니다.
최적화된 함수의 작동 방식을 보다 잘 이해하기 위한 예시:
nums1 = [1, 3]
nums2 = [2]
이 경우에는 nums1
과 nums2
를 합쳤을 때 [1, 2, 3]
이 되고, 중앙값은 2
입니다.
i = 0
, j = 0
, current = 1
(nums1[0]
이 nums2[0]
보다 작음)i = 1
, j = 0
, current = 2
(nums1[1]
이 nums2[0]
보다 큼)결과: 중앙값은 2
(isEven
이 false
이므로 current
의 값)
nums1 = [1, 2]
nums2 = [3, 4]
이 경우에는 nums1
과 nums2
를 합쳤을 때 [1, 2, 3, 4]
이 되고, 중앙값은 (2 + 3) / 2 = 2.5
입니다.
i = 0
, j = 0
, current = 1
(nums1[0]
이 nums2[0]
보다 작음)i = 1
, j = 0
,current = 2
(nums1[1]
이 nums2[0]
보다 작음)
i = 2
, j = 0
, current = 3
(nums1
의 원소가 더 이상 없으므로 nums2[0]
선택)결과: 중앙값은 (2 + 3) / 2 = 2.5
(isEven
이 true
이므로 current
와 previous
의 평균)
nums1 = [1, 5]
nums2 = [2, 3, 4, 6]
이 경우에는 nums1
과 nums2
를 합쳤을 때 [1, 2, 3, 4, 5, 6]
이 되고, 중앙값은 (3 + 4) / 2 = 3.5
입니다.
i
와 j
가 증가하면서 두 배열의 원소들을 순차적으로 비교합니다.k = 3
에 도달했을 때, current = 4
, previous = 3
입니다.결과: 중앙값은 (3 + 4) / 2 = 3.5
(isEven
이 true
이므로 current
와 previous
의 평균)
이러한 예시들은 함수가 어떻게 두 정렬된 배열에서 중앙값을 찾는지 보여줍니다. if
문은 두 배열의 현재 원소 중 더 작은 값을 current
로 선택하고, 이를 통해 중앙값에 도달할 때까지 반복합니다. 배열의 길이가 짝수인 경우, 중앙에 위치한 두 원소의 평균을 반환하고, 홀수인 경우 중앙 원소
예시 코드의 실행 결과는 다음과 같습니다:
nums1 = [1, 3], nums2 = [2]
): 중앙값은 2
입니다.nums1 = [1, 2], nums2 = [3, 4]
): 중앙값은 2.5
입니다.nums1 = [1, 5], nums2 = [2, 3, 4, 6]
): 중앙값은 3.5
입니다.이 결과는 앞서 설명한 로직대로 두 배열에서 중앙값을 찾는 방식을 정확히 반영하고 있습니다. if
절은 두 배열에서 다음 원소를 비교하여 더 작은 값을 선택하고, 이를 통해 중앙값을 효과적으로 찾아냅니다.
Median of Two Sorted Array (Leetcode)
Median of Two Sorted Array (Leetcode)
http://localhost:3000/blog/leetcode_median_of_two_sorted_arrays