문제 설명
함수 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] |
풀이방법
- x가 양수일 때 배열의 길이는 x*n만큼 생기게 됨. for문 반복시(n*x+1)
- x가 음수일 때 배열의 길이는 x*n만큼 생기게 됨. for문 반복시(n*x-1)
- 0일 때 n번만큼 0을 반복
x = 0
n = 3
def solution(x, n):
answer = []
if x>0:
for i in range(x, n*x+1, x):
answer.append(i)
elif x<0:
for i in range(x, n*x-1, x):
answer.append(i)
elif x == 0:
for i in range(0, n):
answer.append(0)
return answer
print(solution(x, n))
level1은 1차원적으로 접근하면 금방 해결할 수 있지만 아닌것도 있던데..., 창의적인가? 간결하고 명확한가?에 대한 고민도 같이 하게 되는것 같다.
프로그래머스에서 가장 많은 좋아요를 받은 코드도 확인해 보았다.
예) x=2, n=5
range(n)은 i에 0~4의 수를 줄 것이고, x*i는 x의 배들을 n번 만큼 출력하게 된다. 여기서 그럼 0부터가 아닌 1~5까지 배수로 하면 되지 않나? 할 수 있지만, 문제의 x는 -10000000 이상, 10000000 이하인 정수입니다. 따라서 0인 경우도 신경을 써야 하기 때문에 i*x+n으로 간단하게 해결할 수 있습니다.
def solution(x, n):
return [i * x + x for i in range(n)]
'코딩테스트 연습 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 (숫자 문자열과 영단어) (0) | 2021.09.06 |
---|---|
[Python] 프로그래머스 (핸드폰 번호 가리기) (0) | 2021.09.05 |
[Python] 프로그래머스 (정수 제곱근 판별) (0) | 2021.09.03 |
[Python]프로그래머스 (다트 게임) (0) | 2021.09.02 |
[python] 프로그래머스 (직업군 추천하기) 위클리 첼린지 4주차 (0) | 2021.09.01 |
댓글