[프로그래머스] Lv1. x만큼 간격이 있는 n개의 숫자

최대 1 분 소요

문제

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

나의 풀이:

def solution(x, n):
    answer = []
    num = x
    for i in range(0,n):
        answer.append(x)
        x+=num
    return answer

처음에 작성한 코드. x의 값이 0이거나 음수여도 문제없이 동작한다. 그런데 range() 함수를 사용하면 여기서 훨씬 더 간단한 코드를 작성할 수 있을 것 같다.

def solution(x, n):
    return list(range(x, x*n+1, x))

그래서 작성한 두번째 코드. 하지만 이대로 코드를 실행하면 x ≤ 0인 경우 부정확한 결과를 얻게 된다.

def solution(x, n):
    if x < 0:
        return list(range(x, x*n-1, x))
    elif x > 0:
        return list(range(x, x*n+1, x))
    else:
        return list([0]*n)

세번째 코드. for문을 사용하는 것보다 효율적이지만 여전히 뭔가 성에 차지 않는다.

다른 사람들의 풀이:

def solution(x, n):
    return [i * x + x for i in range(n)]

예상외로 가장 깔끔한 코드는 range()의 파라미터를 사용하지 않아도 되었다. 그리고 리스트 안에서 조건 문을 작성할 때 ‘i * x + x’ 와 같은 수식을 사용해도 된다는 걸 이 코드를 보고 배웠다.

댓글남기기