You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
제시해주신 예제를 기준으로 num1 = [10]이고 num2 = [2, 3]이라면 처음 19라인에서 num1[0] 와 num2[0] 가 각각 10과 2이기 때문에 교환이 되어 말씀해주신 대로 num1 = [2], ```nums2 = [10, 3]````이 됩니다.
이후 23~27라인은 num2 배열을 정렬한다고 보시면 되는데요.
k = 1일때, num2[1]의 값이 현재 10(num1_item)의 값보다 작기 때문에 24라인의 코드는 참이라서 루프 내부로 들어갑니다. 그런 다음 num2[k - 1] = num2[k] (현재 nums2[0] = 3) 을 실행합니다. 그리고 다음 라인(26)에서 k가 2가 됩니다. k가 2인채로 24라인에 들어서면 while k < n 조건이 맞지 않기 때문에 루프를 종료하게 됩니다
그리고 마지막 k = 2인 경우에 num2[k - 1] = 10 이 되어 최종 num2에는 [3,10]이 되게 됩니다.
질문 주신
코드에 따르면 nums[0] = 3으로 대체해준 다음 nums2[1]을 10으로 바꿔주는 건 없기 때문에 문제가 되지 않을까요?
안녕하세요 책 잘 읽고 있습니다.
learn-algorithm-by-writing/Array/1_7_merge_arr_2/merge_arr_bf.py
Line 27 in cb47053
책을 읽다보니 이 부분이 계속 헷갈리는데요.
코드 수정 이전 책에 나온 원문을 보면
nums2[k - 1] = nums2[k]라고 나와있습니다.
그럼 예를 들어 nums2[0]을 nums1의 요소와 바꿨고, nums2[0]의 요소가 nums2[1]보다 크다고 할 때
nums2[0]의 값을 nums2[1]으로 바꿔주는데, nums2[1]은 바뀌지 않아서 문제가 되지 않을까 싶었습니다.
수정된 코드도 마찬가지라고 생각했습니다.
구체적으로 보면
책에 나온 예시대로 nums1 = [10], nums2 = [2, 3]이라고 할 때
nums1의 10은 nums2의 2와 비교되고 nums1 = [2]가 됩니다.
그럼 nums2 = [10, 3]상태인데,
코드에 따르면 nums[0] = 3으로 대체해준 다음 nums2[1]을 10으로 바꿔주는 건 없기 때문에 문제가 되지 않을까요?
제가 정확히 이해하질 못해서 도움을 부탁드리겠습니다. 감사합니다.
The text was updated successfully, but these errors were encountered: