강의로 돌아가기
김민형

더 간단하게 줄일 수 있을까요?

제가 파이썬 초보라 일단은 가르쳐주신 내용을 바탕으로 짜보았습니다.
이렇게 짜보았는데, 여기서 더 간략하게 줄일 수 있는지 여쭤봐도 될까요..?

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
def solution(L, x):
    for i in range(0,len(L)):
        if x > L[i] and i== len(L)-1:
            L.append(x)
            break
        if x > L[i]:
            continue
        else:
            L.insert(i,x)
            break
    return L
1 개의 답변
이시윤

간단한 것이지만 이것도 연습 문제이기 때문에 직접 코드를 제시할 수는 없습니다만, 지금 상태보다 조금 낫게 할 수 있는 방법을 말로만 말씀드리면:

i0 부터 len(L) - 1 까지 순환시킨 점은 (당연히) 좋습니다. 이 각각에 대해서 검사하다가, x < L[i] 의 조건이 만족하면 그 위치에 x 를 삽입하고 break 합니다. 만약 순환문이 끝까지 반복하면서도 break 를 만나지 않았다면 (이 경우는 x 가 마지막 원소보다도 크거나 같아서 삽입하지 못한 채 순환문이 종료한 경우이므로) 이 때는 L 의 맨 끝에 x 를 이어 붙입니다. 이런 구조는 for 순환문에 대한 else 절로 표현할 수 있습니다.

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