Home > Archive > Leet-Code > ๐Ÿ†™ [LeetCode] 88.Merge Sorted Array.

๐Ÿ†™ [LeetCode] 88.Merge Sorted Array.
swift algorithm datastructure

๐Ÿ†™ [LeetCode] 88.Merge Sorted Array.

  • Difficulty: Easy
  • Topic: Array, Two Pointer, Sorting

Approach 1: Merge and sort

Intuition(์ง๊ด€)

์ˆœ์ง„ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ nums2์˜ ๊ฐ’์„ ๊ทธ์ € nums1์˜ ๋์— ์“ฐ๊ณ , ๊ทธ๋‹ค์Œ nums1์„ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, nums1์„ ์ง์ ‘ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ์ฝ”๋”ฉํ•˜๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ, ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋†’์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Implementation(๊ตฌํ˜„)

class Solution {
    func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
        for i in 0..<n {
            nums1[i + m] = nums2[i]
        }
        nums1.sort()
    }
}
  • Time complexity(์‹œ๊ฐ„ ๋ณต์žก๋„): O((n + m) log(n+m))
    • ๋‚ด์žฅ๋œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธธ์ด๊ฐ€ x์ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋น„์šฉ์€ O(xlogx)์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๊ธธ์ด๊ฐ€ m+n์ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜๋ฏ€๋กœ ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O((n + m) log(n + m))๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • Space complexity(๊ณต๊ฐ„ ๋ณต์žก๋„): O(n), ํ•˜์ง€๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” O(n) ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด์žฅ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Approach 2: Three Pointers (Start From the Beginning)

Intuition(์ง๊ด€)

๊ฐ ๋ฐฐ์—ด์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Two pointer ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๋ฉด O(n+m)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Algorithm

nums1์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ nums1Copy๋ผ๋Š” ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‘ ๊ฐœ์˜ ์ฝ๊ธฐ(read) ํฌ์ธํ„ฐ์™€ ํ•˜๋‚˜์˜ ์“ฐ๊ธฐ(write) ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ nums1Copy์™€ nums2์—์„œ ๊ฐ’์„ ์ฝ๊ณ  nums1์— ์”๋‹ˆ๋‹ค.


  • nums1Copy๋ฅผ nums1์˜ ์ฒ˜์Œ m ๊ฐ’์ด ํฌํ•จ๋œ ์ƒˆ ๋ฐฐ์—ด๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ํฌ์ธํ„ฐ p1์„ nums1Copy์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ํฌ์ธํ„ฐ p2๋ฅผ nums2์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์“ฐ๊ธฐ ํฌ์ธํ„ฐ p๋ฅผ nums1์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • p๊ฐ€ ์—ฌ์ „ํžˆ nums1 ๋‚ด์— ์žˆ๋Š” ๋™์•ˆ:
    • nums1Copy[p1]์ด ์กด์žฌํ•˜๊ณ  nums2[p2] ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด:
      • nums1Copy[p1]์„ nums1[p]์— ์“ฐ๊ณ  p1์„ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด
      • nums2[p2]๋ฅผ nums1[p]์— ์“ฐ๊ณ  p2๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
    • p๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.




class Solution {
    func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
        // nums1์˜ ์ฒ˜์Œ m๊ฐœ ์›์†Œ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
        let nums1Copy = Array(nums1[0..<m])

        // nums1Copy์™€ nums2์— ๋Œ€ํ•œ ์ฝ๊ธฐ ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.
        var p1 = 0
        var p2 = 0

        // nums1Copy์™€ nums2์—์„œ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๊ฒƒ์„ nums1์— ์”๋‹ˆ๋‹ค.
        for p in 0..<(m + n) {
            // p1๊ณผ p2๊ฐ€ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
            if p2 >= n || (p1 < m && nums1Copy[p1] < nums2[p2]) {
                nums1[p] = nums1Copy[p1]
                p1 += 1
            } else {
                nums1[p] = nums2[p2]
                p2 += 1
            }
        }
    }
}

Complexity Analysis

  • Time complexity(์‹œ๊ฐ„ ๋ณต์žก๋„) : O(n+m)
    • ์šฐ๋ฆฌ๋Š” n+2*m ๋ฒˆ์˜ ์ฝ๊ธฐ์™€ n+2*m ๋ฒˆ์˜ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Big O ํ‘œ๊ธฐ๋ฒ•์—์„œ ์ƒ์ˆ˜๋Š” ๋ฌด์‹œ๋˜๋ฏ€๋กœ, ์ด๋Š” O(n+m)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • Space complexity(๊ณต๊ฐ„ ๋ณต์žก๋„) : O(m)
    • ์šฐ๋ฆฌ๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ๊ธธ์ด๊ฐ€ m์ธ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Approach 3: Three Pointers (Start From the End)

Intuition

์ธํ„ฐ๋ทฐ ํŒ: ์ด๊ฒƒ์€ ์‰ฌ์šด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ค‘๊ฐ„ ์ˆ˜์ค€์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
์‰ฌ์šด ์ˆ˜์ค€์˜ ๋ฌธ์ œ ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” ๋” ์–ด๋ ค์šด ํ•ด๊ฒฐ์ฑ…์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ,
์ข‹์€ ์ง€์›์ž๋Š” ์ด๋ฅผ ์ฐพ์„๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.




Approach 2๋Š” ์ด๋ฏธ ์ตœ์ƒ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์ธ O(n+m)์„ ๋ณด์—ฌ์ฃผ์ง€๋งŒ, ์—ฌ์ „ํžˆ ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” nums1 ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๊ฒƒ๋“ค์ด ๋ฎ์–ด์“ฐ์—ฌ์ง€์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค



๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€์‹  nums1์˜ ๋๋ถ€ํ„ฐ ๋ฎ์–ด์“ฐ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”? ๊ฑฐ๊ธฐ์—๋Š” ์•„์ง ์ •๋ณด๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ์š”.



์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด์ „๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” p1์„ nums1์˜ m - 1 ์ธ๋ฑ์Šค์—, p2๋ฅผ nums2์˜ n - 1 ์ธ๋ฑ์Šค์—, ๊ทธ๋ฆฌ๊ณ  p๋ฅผ nums1์˜ m + n - 1 ์ธ๋ฑ์Šค์— ๋‘๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์œผ๋กœ, nums1์˜ ์ฒ˜์Œ m ๊ฐ’๋“ค์„ ๋ฎ์–ด์“ฐ๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ, ์ด๋ฏธ ๊ฐ๊ฐ์„ ์ƒˆ ์œ„์น˜์— ์จ ๋†“์•˜์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ, ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์—†์•จ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ธํ„ฐ๋ทฐ ํŒ: ๋ฒ ์—ด ๋ฌธ์ œ๋ฅผ ์ œ์ž๋ฆฌ์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋Š” ํ•ญ์ƒ ๋ฐฐ์—ด์„ ์•ž์—์„œ ๋’ค๋กœ ์ˆœํšŒํ•˜๋Š” ๋Œ€์‹  ๋’ค์—์„œ ์•ž์œผ๋กœ ์ˆœํšŒํ•˜๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”
์ด๊ฒƒ์€ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ๋ฐ”๊พธ์–ด ๋†“๊ณ , ํ›จ์”ฉ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.







Implementation

1๏ธโƒฃ

2๏ธโƒฃ

3๏ธโƒฃ

4๏ธโƒฃ

5๏ธโƒฃ

6๏ธโƒฃ

class Solution {
    func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
        // ๊ฐ ๋ฐฐ์—ด์˜ ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” p1๊ณผ p2๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
        var p1 = m - 1
        var p2 = n - 1

        // p๋ฅผ ๋ฐฐ์—ด์„ ํ†ตํ•ด ๋’ค๋กœ ์ด๋™ํ•˜๋ฉด์„œ, ๋งค๋ฒˆ p1 ๋˜๋Š” p2๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋” ์ž‘์€ ๊ฐ’์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
        for p in stride(from: m + n - 1, through: 0, by: -1) {
            if p2 < 0 {
                break
            }
            if p1 >= 0 && nums1[p1] > nums2[p2] {
                nums1[p] = nums1[p1]
                p1 -= 1
            } else {
                nums1[p] = nums2[p2]
                p2 -= 1
            }
        }
    }
}

Complexity Analysis

  • Time complexity: O(n + m)
    • Same as Approach 2.
  • Space complexity: O(1)
    • Unlike Approach 2, weโ€™re not using an extra array.

Proof(optional)

์ด ์ฃผ์žฅ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ํšŒ์˜์ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ง ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜๋‚˜์š”?

์ด๋ ‡๊ฒŒ ๋Œ€๋‹ดํ•œ ์ฃผ์žฅ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•œ๊ฐ€์š”?


์ด ๋ฐฉ์‹์œผ๋กœ, `nums1`์˜ ์ฒ˜์Œ `m`๊ฐœ ๊ฐ’์„ ๋ฎ์–ด์“ฐ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ๊ฐ๊ฐ์„ ์ด๋ฏธ ์ƒˆ ์œ„์น˜์— ์จ ๋†“์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค
์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์—†์•จ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




ํ›Œ๋ฅญํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค!

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ด ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ• ๊นŒ์š”?

์ด๋ฅผ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, p๊ฐ€ nums1์—์„œ p1์ด ์•„์ง ์ฝ์ง€ ์•Š์€ ๊ฐ’์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์กฐ์–ธ :์ฆ๋ช…์— ๊ฒ์„ ๋จน๊ณ  ์žˆ๋‚˜์š”?
๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋“ค์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
์ข‹์€ ์ฆ๋ช…์€ ๊ฐ„๋‹จํžˆ ๊ฐ๊ฐ์˜ ๋…ผ๋ฆฌ์  ์ฃผ์žฅ๋“ค์ด ๋‹ค์Œ ์ฃผ์žฅ ์œ„์— ๊ตฌ์ถ•๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ, ์šฐ๋ฆฌ๋Š” "๋ช…๋ฐฑํ•œ" ์ง„์ˆ ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ฆ๋ช…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์— ์ด๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ ์ง„์ˆ ์„ ํ•˜๋‚˜์”ฉ ์ฝ์œผ๋ฉฐ, ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ๊ฐ๊ฐ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ดˆ๊ธฐํ™” ์‹œ p๋Š” p1๋ณด๋‹ค n๋งŒํผ ์•ž์„œ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(๋‹ค๋ฅธ ๋ง๋กœ, p1 + n = p ์ž…๋‹ˆ๋‹ค.)
  2. ๋˜ํ•œ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜ํ–‰ํ•˜๋Š” p์˜ ๋ฐ˜๋ณต ๋™์•ˆ, p๋Š” ํ•ญ์ƒ 1 ๋งŒํผ ๊ฐ์†Œํ•˜๊ณ , p1 ๋˜๋Š” p2 ์ค‘ ํ•˜๋‚˜๊ฐ€ 1 ๋งŒํผ ๊ฐ์†Œํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  3. p1์ด ๊ฐ์†Œํ•  ๋•Œ, p์™€ p1 ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๋ฏ€๋กœ, ๊ทธ ๊ฒฝ์šฐ์— โ€œ์ถ”์›”(overtake)โ€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ํ•˜์ง€๋งŒ p2๊ฐ€ ๊ฐ์†Œํ•  ๋•Œ๋Š”, p๋Š” ์›€์ง์ด์ง€๋งŒ p1์€ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฏ€๋กœ, p์™€ p1 ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์ด 1๋งŒํผ ์ค„์–ด๋“ ๊ฐ€๋Š” ๊ฒƒ์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๊ทธ๋ฆฌ๊ณ  ์ด๋กœ๋ถ€ํ„ฐ, p2๊ฐ€ ๊ฐ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜๋Š” n๋ฒˆ์ž„์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, p์™€ p1 ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์€ ์ตœ๋Œ€ n ๋งŒํผ 1 ์”ฉ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ๊ฒฐ๋ก ์ ์œผ๋กœ, ๊ทธ๋“ค์ด ์ฒ˜์Œ์— n๋งŒํผ ๋–จ์–ด์ ธ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์›”์ด ์ผ์–ด๋‚  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  p = p1์ผ ๋•Œ, ๊ฐ„๊ฒฉ์€ n ๋ฒˆ ์ค„์–ด๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” nums2์˜ ๋ชจ๋“  ๊ฒƒ์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ ํ•  ์ผ์ด ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.