์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค
๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150

[Java] 88. Merge Sorted Array

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150

[Java] 88. Merge Sorted Array

2023. 8. 23. 11:00

๋ฌธ์ œ ํŒŒ์•…

 

๋‘ ์ •์ˆ˜ ๋ฐฐ์—ด nums1 ๊ณผ  nums2 ๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ(non-decreasing) ๋ฐฐ์—ด์ด๋‹ค.

 

๋น„๋‚ด๋ฆผ์ฐจ์ˆœ : ๊ฐ™์€ ํฌ๊ธฐ์˜ ์›์†Œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
ex) 1 2 3
ex) 1 1 2

 

nums1 ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” m+n ์œผ๋กœ, ์ฒซ m๋ฒˆ์งธ๊นŒ์ง€์˜ ์›์†Œ๋Š” merged ๋˜์–ด์•ผ ํ•˜๊ณ  ๋‚˜๋จธ์ง€ n๊ฐœ๋Š” 0์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ทธ n๊ฐœ์˜ 0 ์— nums2์˜ ์›์†Œ๋“ค์ด ๋“ค์–ด๊ฐ€์•ผํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

 


ํ’€์ด

 

1๏ธโƒฃ Array.sort()

๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋– ์˜ค๋ฅธ ํ’€์ด์ด๋‹ค.

 

๋จผ์ € nums1 ๋ฐฐ์—ด์˜ 0 ๋ถ€๋ถ„์— nums2 ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ž…๋ ฅํ•œ ํ›„, Arrays.sort() ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

 

nums1์˜ m+1 ๋ฒˆ์งธ ๋ถ€ํ„ฐ m+n๋ฒˆ์งธ ๊นŒ์ง€ 0์œผ๋กœ ์ž…๋ ฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ

 

for(int i=m;i<m+n;i++){
	nums1[i] = nums2[i-m];
}

์œ„์™€ ๊ฐ™์€ for๋ฌธ์„ ์ˆœํšŒํ•˜๋ฉด ๋œ๋‹ค.

 

import java.util.*;
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        for (int i = m; i < m + n; i++) {
            nums1[i] = nums2[i - m];
        }
        Arrays.sort(nums1);
    }
}

 

๐Ÿ’ก ์ฐธ๊ณ ๋กœ Arrays.sort() ๋Š” DualPivotQuickSort ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(NlogN) ์ด๊ณ  ์ตœ์•…์ธ ๊ฒฝ์šฐ O(N^2) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

๊ฒฐ๊ณผ

 

 

2๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹ (์‹คํŒจ)

O(m+n) ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ณด์•˜๋‹ค.

 

nums1๊ณผ nums2๊ฐ€ ๋‘˜๋‹ค ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

 

ํฌ์ธํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

import java.util.*;
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int[] result = new int[m + n];

        int idx1 = 0;
        int idx2 = 0;
        for (int i = 0; i < m + n; i++) {
            if (idx1 < m && idx2 < n) {
                if (nums1[idx1] >= nums2[idx2]) {
                    result[i] = nums2[idx2++];
                } else {
                    result[i] = nums1[idx1++];
                }
            } else if (idx2 >= n) {
                result[i] = nums1[idx1++];
            } else if (idx1 >= m) {
                result[i] = nums2[idx2++];
            }
        }

        nums1 = result;
    }
}

 

์ด๋ ‡๊ฒŒ ํ’€๊ณ ๋‚˜๋‹ˆ, ์ž˜ ์ถœ๋ ฅ์ด ๋˜์–ด ํ†ต๊ณผํ•  ์ค„ ์•Œ์•˜์ง€๋งŒ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

 

๋ฌธ์ œ์— 

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. 

์œ„์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, nums1 ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ์ธ์ •์„ ์•ˆํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ–ˆ๋‹ค.

 

3๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹

 

ํ’€์ด 2์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

nums1์˜ ๋’ท ๋ถ€๋ถ„ ๊ณต๊ฐ„์ด 0์œผ๋กœ ๋น„์›Œ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ณต๊ฐ„์„ ํ™œ์šฉํ–ˆ๋‹ค.

 

๋’ท ๊ณต๊ฐ„ ๋ถ€ํ„ฐ ๊ฐ’์„ ์ฑ„์›Œ๋‚˜๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 

 

nums1์™€ nums2๋Š” ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ , ๊ทธ ์ค‘ ํฐ ๊ฐ’์„ ์ฑ„์›Œ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ , ์ฑ„์šฐ๋Š”๋ฐ ์‚ฌ์šฉํ•œ ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ๋Š” 1 ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋œ๋‹ค.

 

3๊ณผ 6์ค‘ 6์ด ํฌ๋ฏ€๋กœ 6์ด ์ œ์ผ ๋’ค์— ์ฑ„์›Œ์ง€๊ณ  nums2์˜ ํฌ์ธํ„ฐ๋Š” 1๊ฐ์†Œํ•  ๊ฒƒ์ด๋‹ค.

 

 

๋˜, 3๊ณผ 5๋ฅผ ๋น„๊ตํ•˜๋ฉด, 5๊ฐ€ ํฌ๋ฏ€๋กœ 5๊ฐ€ ์ฑ„์›Œ์ง€๊ณ  nums2์˜ ํฌ์ธํ„ฐ๋Š” 1 ๊ฐ์†Œํ•œ๋‹ค.

 

๋‹ค์Œ์€, nums1์˜ 3์ด ํฌ๋ฏ€๋กœ 3์ด ์ฑ„์›Œ์ง€๊ณ  nums1์˜ ํฌ์ธํ„ฐ๊ฐ€ 1 ๊ฐ์†Œํ•œ๋‹ค.

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ฑ„์›Œ๋‚˜๊ฐ€๋ฉด ์ •๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

import java.util.*;
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int idx1 = m - 1;
        int idx2 = n - 1;
        for (int i = m + n - 1; i >= 0; i--) {
            if (idx1 >= 0 && idx2 >= 0) {
                if (nums1[idx1] <= nums2[idx2]) {
                    nums1[i] = nums2[idx2--];
                } else {
                    nums1[i] = nums1[idx1--];
                }
            } else if (idx2 < 0) {
                nums1[i] = nums1[idx1--];
            } else if (idx1 < 0) {
                nums1[i] = nums2[idx2--];
            }
        }
    }
}

 

๊ฒฐ๊ณผ

 

 


๐Ÿ“– ํšŒ๊ณ 

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ผ๋„, ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋” ์—†์„๊นŒ? ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  Arrays.sort() ๋ฅผ ํ•ญ์ƒ ์ƒ๊ฐ์—†์ด ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ •๋ ฌ๋˜๋Š”์ง€, ์–ด๋–ค ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

  • ๋ฌธ์ œ ํŒŒ์•…
  • ํ’€์ด
  • 1๏ธโƒฃ Array.sort()
  • ๊ฒฐ๊ณผ
  • 2๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹ (์‹คํŒจ)
  • 3๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹
  • ๊ฒฐ๊ณผ
  • ๐Ÿ“– ํšŒ๊ณ 
'๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] 169. Majority Element
  • [Java] 80. Remove Duplicates from Sorted Array II
  • [Java] 26. Remove Duplicates from Sorted Array
  • [Java] 27. Remove Element
์šฐ๊ทœ์ด์ธ์šฐ์œค
์šฐ๊ทœ์ด์ธ์šฐ์œค
๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.