[Algorithm] Merge Sorted Array
๋ฌธ์ ์ค๋ช
nums1 ๋ฐฐ์ด๊ณผ nums2 ๋ฐฐ์ด์ ํฉ์ณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ๋ฌธ์ . ๊ทธ๋ฅ ์ ๋ ฌํด return ํ๋ ๊ฒ์ด ์๋ num1์ด inout์ผ๋ก ๋ค์ด์ num1์ ๋ณ๊ฒฝํด์ผํ๋ค.
๋ฉ์๋์๋ nums1๊ณผ nums2 ๋ฐฐ์ด๋ฟ ์๋๋ผ m๊ณผ n์ด๋ผ๋ int ๊ฐ๋ ๋ค์ด์จ๋ค. m์ nums1์ ์์ ์ซ์, n์ nums2์ ์์ ์ซ์๋ค. ๋์ nums1์ ๋ฐฐ์ด์ m+n๋งํผ์ ๊ธธ์ด๋ฅผ ๊ฐ๊ณ ์๊ณ m ์ด์์ธ ๊ฒฝ์ฐ์๋ ๋๋จธ์ง๊ฐ 0์ผ๋ก ์ฑ์์ง ์ํ๋ก ๋ค์ด์ค๊ฒ ๋๋ค.
์ถ๊ฐ๋ก ์๋์ input์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ ๋ช ํํ ์ดํดํ ์ ์์๋ค. ` [-1,0,0,3,3,3,0,0,0] 6 [1,2,2] 3 ` ์์ ๊ฒฝ์ฐ m+n์ธ 9๊ฐ nums1์ ์ด ๊ธธ์ด๊ฐ ๋๊ณ , 0์ด ์๋ ์๋ -1, 3, 3, 3, 1, 2, 2๋ก 7๊ฐ๋ฟ์ด๊ธฐ ๋๋ฌธ์ 9์ ๋ง์ถฐ 0์ ๋๊ฐ ๋ ๋ฃ์
-1, 0, 0, 1, 2, 2, 3, 3, 3 ์ด ๋์ด์ผ ์ ๋ต์ด๋ค.
ํผ ๋ฐฉ๋ฒ
func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
var nums1WithoutZero = nums1.filter { $0 != 0 }
let needZero = m - nums1WithoutZero.count
if needZero != 0 {
for _ in 0...needZero - 1 {
nums1WithoutZero.append(0)
}
}
nums1 = (nums1WithoutZero + nums2).sorted(by: <)
}
- ์ฐ์ nums1์์ 0์ ๋บ ๋ฐฐ์ด์ ์์ฑํ๋ค.
- m+n์ ๊ธธ์ด๋ฅผ ๋ง์กฑํด์ผํ๋ฏ๋ก ์ถ๊ฐ๋์ด์ผ ํ๋ 0์ ๊ฐฏ์๊ฐ ๋ช์ธ์ง ๊ตฌํด ๋ค์ 0์ ์ถ๊ฐํ๋ค.
- nums1WithoutZero์ nums2๋ฅผ ํฉ์ณ sortํ ๊ฒฐ๊ณผ๋ฅผ nums1์ ํ ๋นํ๋ค.
Leave a comment