함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
def solution(x, n):
for i in range(x,x*n,x):
return i
for 반복문에서 return문이 실행되므로 함수가 바로 종료된다.
-> 들여쓰기의 문제
range 함수는 생성된 숫자를 리스트로 변환하지 않고 바로 return 한다.
-> range 함수는 리스트를 직접 생성하는 것이 아니라, 반복문에서 사용하기 좋은 숫자 시퀀스를 생성하는 것! 생성된 숫자 시퀀스는 리스트가 아니라 range의 객체이다.
: 리스트를 먼저 생성한 후에 range 함수로 나온 객체를 리스트에 추가해야 한다.
range 함수 내의 끝나는 숫자가 x*n
이 아니라 x*n+1
로 바꿔야 한다
def solution(x, n):
result = []
for i in range(x,x*n+1,x):
result.append(i)
return result
테스트 케이스
x = -4 n = 2
실행한 결괏값 [-4]이 기댓값 [-4,-8]과 다르다.
-> x가 음수일 때 제대로 동작하지 않는다.
:range 구문을 바꾸어 볼 것.
def solution(x, n):
result = []
for i in range(1, n+1):
result.append(i*x)
return result
range 내의 변수를 1부터 시작해서 n까지 실행하는 것으로 변환했다. 그리고 결과값으로 나온 i 숫자 시퀀스에 x를 곱한 것을 리스트에 추가시키는 방향으로 코드를 짰다.
테스트 코드 실행 결과 성공, 답안 제출 정답!!
def solution(x, n):
return [i * x + x for i in range(n)]
리스트 컴프리헨션 이라는 방법.
i * x + x 는 각 i에 대해 x를 곱하고 x씩 더한 값을 계산한다.
i의 숫자 시퀀스는 0부터 n-1까지 생성되므로, x부터 시작해 x씩 증가하는 숫자 시퀀스가 생성되는 것이다.
더 간결하고 효율적인 구현방식.