2020. 5. 6. 09:47

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

문제 설명


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

 

제한 조건


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

 

문제 풀이


def solution(x, n):
    end = x*n -1 if x*n <0 else x*n +1
    if x == 0:
        return [0]*n
    return [i for i in range(x,end,x)]

range의 방향이 음수로 늘어날지 양수로 늘어날지를 x와 n을 곱해서 끝항의 값을 알아낸 뒤에 그게 음수인지 양수인지를 안다음에 음수라면 거기서 -1을 해주고 양수면 +1을 해준다. 더하거나 빼지않으면 그 전 요소까지만 리스트가 출력된다.

이렇게하고 제출했더니 자꾸 테스트 8번이 런타임 에러가 떠서 확인해보니 x가 0일 경우의 예뢰를 안잡아줘서 0일 때의 if문으로 따로 잡아줬다.

 

다른 풀이


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

예를들어 x가 2, n이 5였을 때 0부터 5까지 for문으로 꺼내서 0 * 2 + 2 = 2(첫번째 배열) 1 * 2 + 2 = 4(두번째 배열) 2 * 2 + 2 = 6 ... 이런식으로 [2, 4, 6, 8, 10]의 배열을 만들어서 리턴한다.