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 |
Tags
- Docker
- LLaMa
- jpa
- 쿠버네티스
- Python
- GPT
- 메세지큐
- Redis
- 컨설팅
- kubernetes
- 생성형 AI
- k8s
- 리트코드
- 솔루션조사
- 도커
- 오픈시프트
- vuejs
- fastapi
- LeetCode
- 컨설턴트
- 로깅
- 머신러닝
- 생성형
- POD
- Machine Learning
- OpenShift
- vue.js
- fast api
- BFS
- SpringBoot
Archives
- Today
- Total
수 많은 우문은 현답을 만든다
Merge Sorted Array 본문
안녕하세요, 오늘은 Leet Code의 88번 문제를 풀어보겠습니다.
문제 링크
문제 내용
You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively. Merge nums1 and nums2 into a single array sorted in non-decreasing order.
Example 1:
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
Example 2:
Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
Explanation: The arrays we are merging are [1] and [].
The result of the merge is [1].
Example 3:
Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]
Explanation: The arrays we are merging are [] and [1].
The result of the merge is [1].
Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
문제 접근
코딩테스트 문제는 쉽게 접근하는게 좋다.
우리 머리 속에는 2중 포문을 돌리면서 복잡하게 사이사이에 껴넣는 방법이 먼저 생각 날 것이다.
하지만 가능한 시간 복잡도를 줄이면서 간단하게 풀 수 있는 방법을 생각해보고 시작하자.
문제 풀이
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.
"""
- 아무것도 리턴하지 말고 nums1을 직접 수정하라고 한다.
(사실 프로그램을 짤때는 이렇게 직접 수정하는 것은 지양해야한다...)
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
idx = 0
for i in range(m, len(nums1)):
nums1[i] = nums2[idx]
idx += 1
print(nums1)
- nums1의 m번째부터 0이 붙는 것으로 보인다
- 그 뒤에 nums2를 붙이면 어떻게 될까?
- 결과는 [1, 2, 3, 2, 5, 6]
문제 해결
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
idx = 0
for i in range(m, len(nums1)):
nums1[i] = nums2[idx]
idx += 1
nums1.sort(reverse = False)
- 결과는 [1,2,2,3,5,6]. 정답이다.
- 이 문제는 복잡하게 원소 하나씩 찾아서 정렬하려면 시간이 오래 걸린다.
끝!