A. 어떤 문제가 있었는지
함수 solution은 정수 x와 자연수 n을 입력 받아,
x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다.
다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
- 어떻게 풀어야 하는지 모르겠다.
- 구조를 어떻게 짜면 좋을지 아이디어가 떠오르지 않았다.
B. 내가 시도해본 것
- X부터 X만큼 건너뛰어 N개의 수를 구하기 위하여 for 문을 활용하여 answer 리스트를 채우고자 하였다.
- answer 리스트에 들어가는 개수가 n과 같다면 그 i를 answer 리스트에 넣어 그 값을 구하고자 하였다.
- 틀린 이유: answer = [ i, i*n , i ] 는 입력값으로 출력될 뿐 그 안에 i부터 i*n까지 i만큼 건너뛰지는 않았다.
- answer 리스트에 i 와 i*n의 값만 들어가므로 n이 2인 테스트는 통과하였으나 그 외의 테스트는 통과하지 못하였다.
- answer 리스트 안에 for문을 넣어 range를 사용해 범위를 지정해주었다.
- range( ) 범위 지정 시, 그 특성에 따라 시작값 x, 끝값 x*n, 건너뛸 숫자x 를 작성했다.
- x부터 시작하여 x만큼 건너뛰어 n개를 출력하고자 하였다.
- len( )을 이용하여 answer 리스트의 요소 개수가 n개 일 때 answer를 반환하고자 하였다.
- 테스트 중 1개 항목에서 런타임 에러로 실패하였다.
- 실패 요인 중 하나로 n == 0 일 때 처리 방법을 지정하지 않았다.
- 그 외에 어떤 요인들이 테스트 항목에서 예외를 발생시켰는지 알 길이 없다.
C. 어떻게 해결했는지
def solution(x, n):
answer = []
for i in range(n):
value = x + (i*x)
answer.append(value)
return answer
- for 문을 통해 리스트의 개수를 설정하는 방법이다.
- len()을 통해서만 리스트의 개수를 제한할 수 있는 것은 아니다.
- range(n)을 통해 1부터 n까지의 i를 반환한다.
- 기존 x 값에 for문을 통해 불러온 i (1~n)*x 를 더하면 x, x*1, x*2, x*3 .... 의 리스트가 완성된다.
- 해당 값을 기존 answer 리스트에 추가하는 append ( ) 메서드를 사용하면 return 값으로 [x,x*1,x*2,x*3...] 의 결과가 추출된다.
D. 무엇을 새롭게 알았는지
- 문제를 읽고 문장이 뜻하는 바를 먼저 생각하자.
- 하나의 방법에 빠지지 말아야 한다는 것을 배웠다.
- x부터 x만큼 건너뛰고, n개를 추출하라는 이야기는 x의 곱셈과 무엇이 다르단 말인가.
- 곱셈 정의: 덧셈의 반복
- x+x → x*2 → x부터 x만큼 건너뛰고, n=2 → x, x*2 → 2개 반환
- x+x+x → x*3 → x부터 x만큼 건너뛰고, n=3 → x,x*2,x*3 → 3개 반환
번외) Programmers에 있는 해당 문제 타인의 풀이
def number_generator(x, n):
return [i * x + x for i in range(n)]
천재인가 보다...
'Today I Learned' 카테고리의 다른 글
[내일배움캠프_데이터분석] 4주차 월요일 TIL _ DBMS (0) | 2024.07.15 |
---|---|
[내일배움캠프_데이터분석]3주차 금요일 TIL _ for 문 (0) | 2024.07.12 |
[내일배움캠프_데이터분석] 3주차 수요일 TIL _ break (0) | 2024.07.10 |
[내일배움캠프_데이터분석] 3주차 화요일 TIL _ Python 데이터 타입 (0) | 2024.07.09 |
[내일배움캠프_데이터분석] 3주차 월요일 TIL _ Alias (0) | 2024.07.08 |