파이썬에서 리스트에서 무언가를 더할 때 그냥 +로 더할 수 있다.
그러나 그렇게되면, 새로운 리스트를 반환하게 된다.
이때, 유사한 기능을 하는 extend나 append는 새로운 리스트를 추가하는 게 아니라, 기존의 리스트에 값을 추가하게 된다.
다만 이 둘도 동작상의 차이는 있다.
append는 매개변수 그 자체를 추가하게 된다.
extend는 삽입되는 리스트를 풀어서 각각의 엘리먼트로 추가된다.
내 코드는 아래와 같다.
def merge(list1, list2):
# 여기에 코드를 작성하세요
mer_list = []
i=0
j=0
while ((i < len(list1)) and (j < len(list2))):
if(list1[i] > list2[j]):
mer_list.append(list2[j])
j += 1
else:
mer_list.append(list1[i])
i += 1
if (i == len(list1)):
mer_list.extend(list2[j:])
elif (j == len(list2)):
mer_list.extend(list1[i:])
return mer_list
# 테스트 코드
print(merge([1],[]))
print(merge([],[1]))
print(merge([2],[1]))
print(merge([1, 2, 3, 4],[5, 6, 7, 8]))
print(merge([5, 6, 7, 8],[1, 2, 3, 4]))
print(merge([4, 7, 8, 9],[1, 3, 6, 10]))
해설의 코드는 아래와 같다.
+를 활용했음을 볼 수 있다.
def merge(list1, list2):
i = 0
j = 0
# 정렬된 항목들을 담을 리스트
merged_list = []
# list1과 list2를 돌면서 merged_list에 항목 정렬
while i < len(list1) and j < len(list2):
if list1[i] > list2[j]:
merged_list.append(list2[j])
j += 1
else:
merged_list.append(list1[i])
i += 1
# list2에 남은 항목이 있으면 정렬 리스트에 추가
if i == len(list1):
merged_list += list2[j:]
# list1에 남은 항목이 있으면 정렬 리스트에 추가
elif j == len(list2):
merged_list += list1[i:]
return merged_list
# 테스트 코드
print(merge([1],[]))
print(merge([],[1]))
print(merge([2],[1]))
print(merge([1, 2, 3, 4],[5, 6, 7, 8]))
print(merge([5, 6, 7, 8],[1, 2, 3, 4]))
print(merge([4, 7, 8, 9],[1, 3, 6, 10]))
'Upscaling' 카테고리의 다른 글
10. 리액트 쿼리 기초 (0) | 2024.03.18 |
---|---|
8. 스박사님을 아세욧? (0) | 2024.03.10 |
5. min max 트렌드를 따라가지 못하는 늙은 코딩 (0) | 2024.03.04 |
3. 아주 짤막한 React의 탄생 및 핵심 개념 (0) | 2024.02.05 |
2. 파이썬의 산술 연산자에 의한 귀여운 뇌절 (0) | 2024.01.25 |