Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- sorting
- easy
- backtracking
- 이진트리
- Medium
- recursive
- 쉬움
- matrix
- list
- math
- linked list
- tree
- 미디움
- 재귀
- string
- two pointers
- DP
- binary tree
- leetcode
- 리트코드
- HashTable
- hash table
- 문자열
- Depth-first Search
- Binary
- 중간
- Array
- Python
- binary search
- dfs
Archives
- Today
- Total
부부의 코딩 성장 일기
LeetCode 88(Merge Sorted Array, Python) 본문
1. 문제 링크
2. 문제 설명
- 오름차순 정수로 구성된 두 array nums1, nums2와, 각 array의 개수를 m,n이라고 할 때,
- nums1, nums2를 오름차순 순서로 merge한 list를 반환
- 전제조건 "in-place"
- return하는 list는 nums1에 store해야 하며, 결과적으로 nums의 길이는 m+n이 됨
- 예시1) nums1 = [1,2,3,0,0,0] m=3, nums2 = [2,5,6] n= 3 → [1,2,2,3,5,6] 반환
- 예시2) nums1 = [1] m=1, nums2 = [] n= 0 → [1] 반환
3. 처음 풀이
- nums1의 m+1~m+n 자리에 nums2 element를 추가, nums2의 n+1~m+n자리에 nums1 element 추가
- ex) nums1 = [1,2,3], nums2 = [2,5,6]일 때 일단 nums1 를 [1,2,3,2,5,6]으로, nums2를 [2,5,6,1,2,3]으로 셋팅
- 그리고 nums1의 element에 순차적으로 min(nums2)를 append
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
j=0
for i in range(m,m+n): # nums1의 m+1~m+n 자리에 nums2 element를 추가
nums1[i] = nums2[j]
j+=1
for i in range(m): # nums2의 n+1~m+n자리에 nums1 element 추가
nums2.insert(i,nums1[i])
j = 0
for i in range(m+n): #nums1의 element에 순차적으로 min(nums2)를 append
nums1[j] = min(nums2)
nums2.remove(min(nums2))
j+=1
- runtime beats 82.29% 로 결과 괜찮았음
4. 다른 풀이
- 다른 사람의 풀이 중 괜찮았던 풀이
- list.sort()를 생각하지 못했었다. 단순히 nums1에 nums2 element를 넣고, nums1를 sort하면 간단히 해결 가능
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
for i in range(m, len(nums1)):
nums1.pop(m)
nums1 += nums2[:n]
# for i in range(n):
# nums1.append(nums2[i])
nums1.sort()
5. 배운 점
- sort()는 in-place 방식
- sort() 기존의 리스트를 정렬, sorted()는 새로 정렬된 리스트를 만듦.