인프런 커뮤니티 질문&답변

용용용님의 프로필 이미지
용용용

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

[추가영상] 병합정렬-2

안녕하세요!

작성

·

180

1

선생님 이런 에러는 왜 생기는걸까요 ? ㅜㅜ

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

tmp.append(arr[p1:mid+1])

이렇게 하면 tmp라는 리스트에 새로은 리스트를 넣어 2차원 리스트가 됩니다.

tmp=tmp+arr[p1:mid+1] 이렇게 해야 일차원리스트 + 일차원리스트=일차원리스트가 됩니다.

0

용용용님의 프로필 이미지
용용용
질문자

def Dsort(lt, rt):

    if lt < rt:

        mid = (lt+rt)//2

        Dsort(lt, mid)

        Dsort(mid+1, rt)

        p1 = lt

        p2 = mid+1

        tmp = []

        while p1 <= mid and p2 <= rt:

            if arr[p1] < arr[p2]:

                tmp.append(arr[p1])

                p1+=1

            else:

                tmp.append(arr[p2])

                p2+=1

        if p1 <= mid: tmp.append(arr[p1:mid+1])

        if p2 <= rt: tmp.append(arr[p2:rt+1])

        for i in range(len(tmp)):

            arr[lt+i] = tmp[i]

if __name__ == "__main__":

    arr = [23, 11, 45, 36, 15, 67, 33, 21]

    Dsort(0,7)

    print(arr)

용용용님의 프로필 이미지
용용용

작성한 질문수

질문하기