leetcode 88. Merge Sorted Array (python)

K Choi·2024년 3월 28일

Python3

목록 보기
2/2

알아야 할 개념

python Array(배열, list)

Array는 대괄호[] 안에 값들을 나열하여 생성하며, 각 값들은 쉽표로 구분한다. Array에 저장되어 있는 값은 'element'라 한다.

Array에는 string, 숫자, boolean 값 등 모든 type의 값을 저장할 수 있고, 서로 다른 type의 값들을 섞어서 저장하는 것도 가능하다.

Array에 저장되어 있는 값울 읽어들이려면 해당 값의 순서, 즉 index를 사용해 읽어들인다. Array에서 index는 0부터 시작한다. => 위 그림에서 "강원도"는 0번, "경기도"는 1번이다.
n개의 element로 이루어진 array의 마지막 element의 index는 n-1이 된다.

1. List 만들기

List를 사용하면 다양한 원소들의 모음을 만들 수 있다.

kc = [], kc1 = list()
kc2 = [1,3,5,6,7]
kc3 = ["하이",2,4,6,[1,7],True]
kc4 = ["python",False,[2,5],1,2,6]

이처럼 list는 선언만 할 수도 있고, list 안에 한 원소로만 구성될 수도 있고, 다양한 자료형의 원소들로 구성될 수도 있다.

Array/List 활용해보기

Input으로 주어진 리스트의 첫번째와 마지막 element의 값을 더한 값을 리턴해주세요. 
만일 리스트가 비어있다면 0이 리턴되어야 합니다. 
리스트의 총 길이가 1이라면 그 하나의 요소 값만 리턴해주면 됩니다.
def add_elems(arr): # 함수정의
	if len(arr) == 0: return 0 # arr의 길이가 0이라면 return 0
    else if len(arr) == 1: return arr[0] # arr의 길이가 1이라면 return 0번째 element
    else: return arr[0] + arr[-1] ## arr 안의 0번째와 -1번째 element를 더해 return

2. List +,* 연산

List는 +와 * 연산을 할 수 있다.

a = [1,2]
b = [3.4]

-> a+b > [1,2,3,4]
리스트를 더하면 각 리스트의 원소들이 하나의 리스트로 결합된다.
-> a3 > [1,2,1,2,1,2]
연산은 list의 원소들을 곱해준 수만큼 반복해서 한 list에 포함시킨다.

3. List 원소 값 정렬

sort(), sorted() 구분

sort() 함수를 사용하여 list의 원소 값들을 내림차순, 오름차순으로 정렬할 수 있다.

a = [1,4,2,3]
a.sort()

a > [1,2,3,4] : a변수 원소 값이 정렬되었다.

주의!👺
sort()는 해당 리스트 변수의 원래 값에 적용되므로 이를 인지하고 사용해야 한다. 반면, sorted() 함수를 사용하면 해당 List값은 변하지 않지만 정렬 기능이 이루어졌을 때의 원소 값이 출력된다.
a = [1,5,3,2,4]라면
sorted(a) > [1,2,3,4,5]
a > [1,5,3,2,4]

sort()는 a.sort()처럼 쓰이고 sorted()는 sorted(a)로 쓰인다.
sort()는 a라는 list에 접근하여 그 변수의 값을 정렬한다고 보고,
sorted()는 a의 변수에 접근하는 것이 아니라 a의 데이터를 사용하여 그 값만 사용한다고 인식한다.

sort()함수는 기본적으로 오름차순으로 정렬하지만, reverse를 이용해 내림차순으로 정렬할 수도 있다.

a = [1,5,3,2,4]
a.sort(reverse=True)

에서 a > [5,4,3,2,1]로 나온다. Default는 sort(reverse=False)이기 때문에 오름차순으로 나온 것.

4. Python 내장 함수 range()

Python에서 range()함수는 일정 범위의 연속된 정수 생성하는 데 사용된다. 주로 for문과 함께 사용되며 일정 횟수만큼 반복을 수행하거나, 특정 범위의 정수를 이용한 작업에 유용하게 사용된다.

range()함수는 list나 tuple을 반환하지 않고 range 객체를 반환한다. 이 객체는 반복문에서 사용하거나 list() 함수를 통해 리스트로 변환할 수 있다.

  • range(stop): 0 ~ (stop-1)
  • range(start, stop): start ~ (stop-1)
  • range(start, stop, step): start ~ (stop-1), step 간격으로

문제

Leetcode 88 문제

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(n):
            nums1[i+m] = nums2[i]
        nums1.sort()

참고:
파이썬 기본 자료 구조
[Python 내장 함수]range():일정 범위의 연속된 정수 생성

profile
mbeCoder

0개의 댓글