강의로 돌아가기
kuka84

문제 해결이 안되네요..

def solution(L, x):             
    answer = []
    for i in L:
        if (i < x): 
            L[i].insert(x)
        else:
            L[i+1].insert(x)
    answer=L
    return answer

안녕하세요 이렇게 풀어봤는데요.

for문에 익숙하지 못한지 더이상 답을 못찾겠습니다..

문제를 해결할 수 있을만한 힌트나 해답을 부탁드립니다.

감사합니다.

1 개의 답변
이시윤

위의 코드에서 L[i] 의 데이터형은, 문제에서 주어진 입력과 같다면 정수 (int) 입니다. .insert() 메서드는 정수형 데이터 객체가 제공하는 것이 아니라 리스트 (list) 타입의 데이터 객체가 제공하는 것이므로 위와 같이 쓰면 안됩니다. 구체적으로는, 리스트 L = [2, 3, 5, 6] 이라고 가정할 때, 4 를 알맞은 위치에 삽입하기 위해서는 아래와 같이 합니다.

L.insert(2, 4)

이 때, 첫 번째 인자로 준 2 는 리스트 내에서의 위치를 가리키며 (리스트 내에서의 위치는 0 에서 시작하므로 세 번째 위치, 즉 삽입 연산 이전에 5 가 있던 위치), 두 번째 인자로 준 4 는 삽입할 새로운 원소를 지정합니다. 따라서 위 연산의 결과로 리스트 L 은 새로운 모습을 가지게 되는데, [2, 3, 4, 5, 6] 입니다. (이러한 Python 리스트의 연산은 Python 대화형 세션 을 통해서 확인해보시기 바랍니다.)

그러므로, 위에 입력한 코드에서 변수 i 를 이용해서 새로운 원소 x 가 삽입될 위치를 찾는 데까지는 거의 접근하였습니다. (forif 를 사용해서, 주어진 새 원소인 x 가 삽입될 올바른 위치를 찾는다는 뜻입니다.) 그 후에는 순환문을 빠져 나와서 (순환문을 빠져 나오는 데에는 break 라는 문장을 이용할 수 있습니다. 만약 이러한 breakcontinue 를 사용하는 순환문 제어에 익숙하지 않다면, 해당하는 부분의 Python 문법을 다시한번 참고하시기 바랍니다.) 리스트 L 의 적절한 위치 (변수 i 를 이용해서 찾아낸) 에다가 원소 x 를 삽입하면 문제를 해결할 수 있을 것입니다.

여러 사용자가 문제 풀이를 시도할 수 있으므로, 직접 정답 코드를 여기에 게시할 수는 없음을 양해해 주시기 바랍니다.

  • kuka84
    덕분에 해결했습니다. 감사합니다 ^^ kuka84 2018.07.18 14:46
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.