강의로 돌아가기
김영수

코드에 대한 피드백 부탁드립니다.

쥬피터 노트북에서는 실행이 되는데 programmers홈페이지에서는 실행이 안됩니다. ㅠ

테스트 실행 중 오류가 발생하였습니다.
Traceback (most recent call last):
File /solution_test.py, line 18, in test
actual0 = solution(p00,p01)
TypeError: solution() takes 1 positional argument but 2 were given

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import random

def solution(n):
    L = []

    for i in range(n):
        a = random.randint(1,100)
        L.append(a)

    num = random.randint(1,100)
    L.append(num)

    Lmax = L[0]

    while True:
        count = 0
        for i in range(len(L)-1):
            if L[i] > L[i+1]:
                count += 1
                temp = L[i]
                L[i] = L[i + 1]
                L[i + 1] = temp
        if count == 0:
            break

    print(L)

solution(5)
1 개의 답변
이시윤

초기 코드에서 볼 수 있듯, 이 문제의 답으로서 작성할 solution() 함수의 형태는 solution(L, x) 로서 두 개의 입력 인자를 받아들입니다. L 은 리스트이고 x 는 그 리스트에 삽입할 원소입니다. 위에 적은 코드에서는 함수 solution() 이 하나만의 인자를 받아들이도록 만들었기 때문에 문제에서 요구하는 바와 영 다른 모습이 되었습니다.

프로그래머스에서 제출한 코드를 채점할 때 solution() 함수를 호출하는 것은 위에 적은 코드에서처럼 (solution(5) 가 마지막에 있는데) 사용자가 작성한 코드가 실행하는 것이 아니고, 채점을 위한 테스트 시스템이 정해진 테스트 케이스를 입력으로 하여 사용자가 제출한 solution() 함수를 호출합니다. 그런데 제출한 solution() 함수가 올바른 형태를 가지고 있지 못해서 에러가 발생합니다.

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