x만큼 간격이 있는 n개의 숫자

ch.2·2024년 6월 26일
0

코딩 테스트

목록 보기
3/21
post-thumbnail

함수 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씩 증가하는 숫자 시퀀스가 생성되는 것이다.
더 간결하고 효율적인 구현방식.

profile
데이터 분석 공부중

0개의 댓글