강의로 돌아가기
이경빈

왜 자꾸 결과값이 나오지 않는걸까요..?

테스트 코드를 추가해서 같을때, 작을때 그리고 기존의 중간에 값이 들어갈 때는 성공을 했지만 클때는 성공하지 못했습니다.
x값이 리스트의 모든 값보다 클 때를 위한 조건문을 마지막 else에 삽입하려고 하면 다른 모든 케이스가 오류가 납니다..
해결방법이 있나요??

해봤던 방법은
else:
    i+=1
    if L[i] < x:
         L.append(x)

이런식으로 해보기도 했는데 계속 안됐습니다. 도저히 모르겠어요. 이 문제만 가지고 2시간동안 헤매고 있습니다..

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(L, x):             
    answer = L
    for i in range(len(L)):
        if L[i] > x:
            L.insert(i,x)
            break
        elif L[i] == x:
            L.insert(i,x)
            break
        else:
            i+=1

    return answer
1 개의 답변
이시윤

리스트 L 에 존재하는 모든 원소들이 x 보다 작은 경우, 이 새로운 원소 x 는 리스트의 맨 끝에 덧붙여져야 합니다. 만약 위와 같은 식의 코드를 작성한다면, L3 에서 시작하는 for 순환문이 break 를 만나지 않고 빠져 나온 경우이므로, for 에 대한 else 절에 적절한 문장을 넣음으로써 해결할 수 있을 것입니다. 또한, 지금 있는 대로라면 L10 의 else 절에 있는 i += 1 은 있으나 없으나 마찬가지입니다. (왜 그런지 생각해 보시고, 간단한 순환문을 만들고 print() 를 통해서 확인해 보세요.)

추가로, L4 의 if 와 L7 의 elif 절 내부가 동일하므로, 하나의 if 문장으로 하고, 두 조건을 모두 포함할 수 있도록 (L[i] <= x) 하면 좀 더 나아지겠네요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.