문제 링크 : 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 |