본 게시물은 http://tryhelloworld.co.kr/ 에 출제된 문제를 바탕으로 풀이한 것입니다.
문제.
number_generator함수는 x와 n을 입력 받습니다.
2와 5를 입력 받으면 2부터 시작해서 2씩 증가하는 숫자를 5개 가지는 리스트를 만들어서 리턴합니다.
[2,4,6,8,10]
4와 3을 입력 받으면 4부터 시작해서 4씩 증가하는 숫자를 3개 가지는 리스트를 만들어서 리턴합니다.
[4,8,12]
이를 일반화 하면 x부터 시작해서 x씩 증가하는 숫자를 n개 가지는 리스트를 리턴하도록 함수 number_generator를 완성하면 됩니다.
1 2 3 4 5 6 | def number_generator(x, n): # 함수를 완성하세요 return [] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(number_generator(3,5)) | cs |
풀어보세요
정답 및 풀이
[2,4,6,8,10]
1 2 3 4 5 6 | def number_generator(x, n): # 함수를 완성하세요 return [] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(number_generator(3,5)) | cs |
세분화1. 은 6번줄,1번줄이 되겠죠?
세분화6.은 이제 나머지와 함께 3번줄에 하면 될것 같습니다.
세분화 하기전에 생각해보자
두개의 수를 입력받아서 어떻게 2씩증가할것인가?
증가한 수를 두번째 입력값만큼 어떻게 출력할 것인가?
여기서 나오는 공식이 있습니다.
A,B를 입력받았을때 몇까지 숫자를 출력할 것인지.
예를 들겠습니다.
저는 2,5를 입력하겠습니다.
그렇다면 2부터 시작해서 2씩 증가하는 5개의 숫자를 출력해야겠죠?
예1). 2부터 시작해서 2씩 증가하는 5개의 숫자
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ~~~~~~~~~~~~~~~~~~~
예2). 3부터 시작해서 3씩 증가하는 5개의 숫자
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17~~~~~~~~~~~~~~~
공통점을 찾으셨나요?
공통점은 바로 2개의 숫자를 곱한값 까지만 나오게 되는점 입니다.
Ex)2부터 시작해서 2씩 증가하는 수를 5개만 출력하자
->2x5=10. 즉 10까지만 출력하면 5개숫자가 딱나옵니다.
3부터 시작해서 3씩 증가하는 수를 5개만 출력하자
->3x5= 15. 즉 15까지만 출력하면 5개 숫자만 출력할 수 있습니다.
우리는 이 원리를 이용해서 쉽게 문제를 풀어보겠습니다.
정답.
1 2 3 4 5 6 | def number_generator(x, n): # 함수를 완성하세요 return list(range(x, x*n+1, x)) # 아래는 테스트로 출력해 보기 위한 코드입니다. print(number_generator(2,5)) | cs |
return list(range(x, x*n+1, x))에서 range(x, x*n+1, x) 부분을 살펴보겠습니다
range(x, x*n+1, x)
x부터 시작한다, x*n+1까지, x만큼
왜 x*n+1 인가? +1은 왜 붙을까?
그것은 바로 0부터 시작하기 때문에 입니다.
만약 +1을 지우게되면 4개씩만 출력될것입니다.
원리만 알면 매우 쉬운문제입니다.
'파이썬 프로그래밍 > 파이썬 심화' 카테고리의 다른 글
[Python] 파이썬 예제. 짝수와 홀수 구하기 풀이 (0) | 2017.03.24 |
---|---|
[Python] (초급) 파이썬 핸드폰번호 가리기 예제 (0) | 2017.03.21 |
[Python] 파이썬 예제 반복문과 조건문을 이용한 자판기 만들기 (2) | 2016.05.19 |
[Python] 입력받은 숫자의 구구단 출력하기 (0) | 2016.05.19 |
[Python] 시프트연산 예제1-1 (0) | 2016.05.19 |