본문 바로가기
Algorithm/Leetcode

LeetCode - Merge Two Sorted Lists

by du.it.ddu 2020. 7. 30.
반응형

문제 링크 : https://leetcode.com/problems/merge-two-sorted-lists/

난이도 : Easy


문제 풀이 :

컴퓨터공학 또는 프로그래밍을 공부한 사람이라면 Merge Sort에 대해 알 것이고 굉장히 익숙한 느낌을 받을 것이다.

Merge Sort의 한 부분과 동일하기 때문이다.

1. Int Array 두 개를 합치므로 합친 사이즈인 m+n 만큼의 IntArray를 생성한다.

2. 두 개의 Array를 순회하며 작은 것부터 임시 Array에 추가한다.

3. 위 과정을 거치면 둘 중 하나의 Array는 요소들이 남아있게 된다. 남아있는 요소를 임시 Array에 마저 추가한다.

4. nums1 배열에 결과가 담겨 있어야 하므로 임시 Array의 값을 복사해준다.


소스 코드 :

class MergeSortedArray {
    fun merge(nums1: IntArray, m: Int, nums2: IntArray, n: Int): Unit {
        var i = 0
        var j = 0
        var k = 0

        val tempArray = IntArray(m+n)

        while(i < m && j < n) {
            val num1 = nums1[i]
            val num2 = nums2[j]

            if(num1 > num2) {
                tempArray[k] = num2
                j += 1
            } else {
                tempArray[k] = num1
                i += 1
            }

            k += 1
        }

        while(i < m) {
            tempArray[k] = nums1[i]
            k += 1
            i += 1
        }

        while(j < n) {
            tempArray[k] = nums2[j]
            k += 1
            j += 1
        }

        for(i in nums1.indices) {
            nums1[i] = tempArray[i]
        }
    }
}

후기 : 

코드가 쓸데없이 긴 느낌이다.

문제를 푼 후 다른 사람의 코드를 봤는데 충분히 짧게 할 수 있는 문제였다.

익숙한 문제라고 해서 익숙하게 푼게 원인인 것 같다.

반응형

'Algorithm > Leetcode' 카테고리의 다른 글

LeetCode - Remove Duplicates from Sorted Array  (0) 2020.08.02
LeetCode - Valid Parentheses  (0) 2020.06.27
LeetCode - Longest Common Prefix  (0) 2020.06.27
LeetCode - Roman to Integer  (0) 2020.06.27
LeetCode - Reverse Integer  (0) 2020.06.27