[Algorithm] Merge Sorted Array

๋ฌธ์ œ ์„ค๋ช…

nums1 ๋ฐฐ์—ด๊ณผ nums2 ๋ฐฐ์—ด์„ ํ•ฉ์ณ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฌธ์ œ. ๊ทธ๋ƒฅ ์ •๋ ฌํ•ด return ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ num1์ด inout์œผ๋กœ ๋“ค์–ด์™€ num1์„ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

๋ฉ”์„œ๋“œ์—๋Š” nums1๊ณผ nums2 ๋ฐฐ์—ด๋ฟ ์•„๋‹ˆ๋ผ m๊ณผ n์ด๋ผ๋Š” int ๊ฐ’๋„ ๋“ค์–ด์˜จ๋‹ค. m์€ nums1์˜ ์š”์†Œ ์ˆซ์ž, n์€ nums2์˜ ์š”์†Œ ์ˆซ์ž๋‹ค. ๋Œ€์‹  nums1์˜ ๋ฐฐ์—ด์€ m+n๋งŒํผ์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ  m ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” ๋‚˜๋จธ์ง€๊ฐ€ 0์œผ๋กœ ์ฑ„์›Œ์ง„ ์ƒํƒœ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค.

image

์ถ”๊ฐ€๋กœ ์•„๋ž˜์˜ 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์— ํ• ๋‹นํ•œ๋‹ค.

๊ฒฐ๊ณผ

image

๋ ˆํฌ ์ปค๋ฐ‹

Categories:

Updated:

Leave a comment