[파이썬 알고리즘] x만큼 간격이 있는 n개의 숫자

by Youngho posted May 22, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

문제:

number_generator함수는 x와 n을 입력 받습니다.
2와 5를 입력 받으면 2부터 시작해서 2씩 증가하는 숫자를 5개 가지는 리스트를 만들어서 리턴합니다.
number_generator(2,5) -> [2,4,6,8,10] 

4와 3을 입력 받으면 4부터 시작해서 4씩 증가하는 숫자를 3개 가지는 리스트를 만들어서 리턴합니다.
number_generator(4,3) -> [4,8,12]

이를 일반화 하면 x부터 시작해서 x씩 증가하는 숫자를 n개 가지는 리스트를 리턴하도록 함수 number_generator를 완성하면 됩니다.

 

나의 풀이

 

def number_generator(x, n):
    list = []
    for i in range(n):
        list.append(x * (i+1))
    return list

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(number_generator(3,5))

 

1. 빈 배열을 만든다.

2. range를 이용하여 사용자가 입력한 두 번째 인자(리스트 요소의 개수) 만큼 반복(for in)한다.

3. range 함수에 의해 0부터 n-1까지의 범위가 만들어졌으며 이는 i에 대입된다.

이제 사용자가 입력한 첫 번째 숫자에 (i+1)를 곱하면 우리가 원하는 답이 나온다.

 

*만약 i+1가 거슬린다면 range의 범위를 1부터 n+1까지로 바꾸자.

 for i in range(1, n+1):
        list.append(x * i)

 

다른 사람의 풀이

def number_generator(x, n):
    # 함수를 완성하세요
    return [i * x + x for i in range(n)]
print(number_generator(2, 5))

 

def number_generator(x, n):

    t = list(range(x, n*x+1, x))
    return t

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(number_generator(3,5))

▲개인적으로 추천하고 싶은 코드. range의 인자(시작 값, 끝 값, 증가 값)를 잘 활용했다.

 



서버에 요청 중입니다. 잠시만 기다려 주십시오...