[프로그래머스] Lv1. x만큼 간격이 있는 n개의 숫자
문제
함수 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’ 와 같은 수식을 사용해도 된다는 걸 이 코드를 보고 배웠다.
댓글남기기