본문 바로가기

무작정 따라해보기(정리, 문제풀기)/어서와! 자료구조와 알고리즘은 처음이지?

정렬된 리스트에 원소 삽입하기(python 코드)

728x90

"어서와! 자료구조와 알고리즘은 처음이지?" 강의의 정렬된 리스트에 원소 삽입 문제를 풀고 고치는 과정을 기록합니다.

 

def solution(L, x):
    cnt = 0
    for i in range(len(L)):
        if L[i] > x:
            L.insert(i, x)
            cnt+=1
            break
    if cnt == 0:
        L.append(x)

    return L

제 처음 코드입니다. x값을 넣지 못하면 마지막에 값이 들어가게 한다는 그런 코드를 짰습니다.

근데 이렇게 보다는 맨 마지막의 값이 x보다 작다면 맨 뒤에 넣어주고, 그렇지 않다면 for문을 돌면서 x보다 더 큰 값의 자리에 넣어줘서 정렬을 하는 방법이 나을 것 같다고 생각했습니다.

def solution(L, x):
    if x > L[-1]:
        L.append(x)
    else:
        for i in range(len(L)):
            if L[i] >= x:
                L.insert(i, x)
                break

    return L

그래서 이렇게 바꿨습니다!

 

다른 사람의 풀이에서 어떤 사람이 x가 들어갈 위치를 리스트의 길이만큼 돌면서 x보다 작을때마다 idx를 증가시키고 커지면 break해서 idx의 자리에 x를 넣는 방법을 보았는데 그 방법으로도 해보았습니다.

def solution(L, x):
    idx = 0
    for i in range(len(L)):
        if L[i] <= x:
            idx+=1
        else: break

    L.insert(idx, x)

    return L

 

 

 

"나는 꾸준함을 잃지 않는다."