강의로 돌아가기
최형준

왜틀렸는지 알려주시면 감사합니다.

아래와 같이하면 제대로 되는거 같은데
테스트 통과는 되는데 채점하기 하면 세번째 채점에서 틀렸습니다 라고 나오고 왜 틀렸는지 나오지도 않습니다 ㅠㅠ
왜 틀렸는지 설명부탁드립니다.

def solution(L, x):
answer = L

for i in range(len(L)):
if x<L[i]:
answer.insert(i,x)
break

return answer

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
def solution(L, x):
    answer = L


    for i in range(len(L)):
        if x<L[i]:
            answer.insert(i,x)
            break

    return answer
1 개의 답변
이시윤

실행 을 눌러서 테스트를 통과하는 것은, 기본적으로 문제 지문에 주어진 것과 같거나 비슷한 입력을 주어 올바른 출력이 나오는지를 검사하는 과정입니다. 어떤 입력이 가해졌고 어떤 출력이 얻어졌는지도 모두 공개됩니다. 문제를 풀 때에는 테스트 케이스 추가하기 를 통하여 사용자가 테스트해보고 싶은 입력-출력의 쌍을 직접 정의하여 테스트해볼 수도 있습니다.

한편, 코드 채점 을 눌렀을 때에는 공개되지 않은 입/출력의 쌍, 즉 알려지지 않은 테스트 케이스를 통하여 코드가 올바르게 동작하는지를 검사합니다. 만약 입/출력의 쌍을 다 알려주고 문제를 낸다면 문제 자체가 성립하지 않습니다. (극단적인 경우, if ... return ... 만 나열해서 채점에 이용되는 케이스만 통과하도록 코드를 구성하는 것도 가능해집니다.) 따라서 제출한 코드가 케이스들을 모두 통과하지 못한다고 해도 어디서 어떻게 틀렸는지 알려주지 않습니다. 프로그래밍을 연습한다는 것에는, 발생할 수 있는 모든 경우를 다 고려해서 내가 작성한 코드가 올바르게 동작할지를 예상하고, 만약 그렇지 않다면 어떤 경우에 대해서 올바르게 동작하지 못하는지를 파악하여 수정하는 (소위 디버깅 이라고 부릅니다) 과정이 중요합니다.

두 가지 힌트를 드리겠습니다.
(1) 문제 지문에서, 마지막에 주의 라고 쓴 부분을 잘 읽어보세요. 코드의 동작 정확성에 매우 자주 영향을 미치는 부분은, 이와 같은 경계 조건 (boundary condition) 이기도 합니다.
(2) 위 과정을 통해서 짚이는 곳이 있다면, 테스트 케이스 추가하기 를 통하여, 쉽게 (눈과 머리와 손으로) 예상할 수 있는 케이스들을 직접 정의해서 테스트해보세요. 이것은 좋은 연습이 됩니다.

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