Python 공부기록

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

혜원89 2021. 2. 24. 18:59

문제 설명

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

제한 조건

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

입출력 예

x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

 

✅SOL_1

1
2
3
4
5
6
7
def solution(x, n):
    answer = [x]
    s = x
    for i in range(1,n):
        x += s
        answer.append(x)
    return answer
cs

x부터 시작해서 증가하는 값을 리스트에 담아야하기 때문에 answer리스트에 x값을 포함하여 선언한다. 초기 x값을 변수 s에 저장해 놓고 for문으로 간다. 1부터 n-1까지 반복하는 for문에서 초기x값인 s가 x에 더해지고 더해진 값은 answer리스트에 append된다.

 

✅SOL_2

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

더 간단한 풀이이다. 따로 리스트나 변수를 선언할 필요없이 List Comprehension을 통해 바로 return하는 방법이다.

0부터 n-1까지의 i를 통해 < i * x + x >식을 작성하여 문제의 리스트를 만들 수 있다. 

 

파이썬 Comprehension은 iterable(반복가능한) 객체를 생성하는데 유용한 기능이다. 위의 문제처럼 반복되는 조건이나 특정한 조건이 있는 경우 만족하는 객채를 쉽게 생성할 수 있다.  List Comprehension, Set Comprehension,Dict Comprehension이 있다.

 

List Comprehension

[i * 3 for i in range(1,11)]

위의 예제는 range(1, 11) 즉 1부터 10까지의 범위에 있는 각 i에 3을 곱하여 리스트에 저장하는 코드이다. 출력은 구구단 3단인 

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]이다.

각 숫자에 3이 곱해진 리스트와 같이 특정한 조건을 적용해야할 때 유용하다

 

'Python 공부기록' 카테고리의 다른 글

Python _ 평균구하기  (0) 2021.03.02
Python _ 행렬의 덧셈  (2) 2021.02.26
Python _ 핸드폰 번호 가리기  (0) 2021.02.25
Python3 _ 직사각형 별찍기  (0) 2021.02.23
Python 공부기록  (1) 2020.11.03