연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
입출력 예
num | total | result |
---|---|---|
3 | 12 | [3, 4, 5] |
5 | 15 | [1, 2, 3, 4, 5] |
4 | 14 | [2, 3, 4, 5] |
5 | 5 | [-1, 0, 1, 2, 3] |
def solution(num, total):
answer = []
center_num = int(total // num)
if num % 2 == 1: #홀수인 경우
for i in range(center_num - int(num//2), center_num + int(num//2) + 1 ):
answer.append(i)
print(answer)
else :
for j in range(center_num - int(num//2) +1, center_num +int(num//2) + 1):
answer.append(j)
print(answer)
# num 이 홀수 이면 가장 가운데의 수는 total/num → center_num이라고 선언
# num 이 짝수이면 가장 가운데-1 번째 숫자의 수는 total//num
# for문의 시작
# 홀수의 경우 center_num - int(num//2)
# 짝수의 경우 center_num - int(num//2) +1
# for문의 끝
# 홀수의 경우 center_num + int(num//2) + 1
# 짝수의 경우 center_num + int(num//2) + 1
return answer
자연수인 경우 1부터 n까지 연속 숫자 합 구하는 공식
n(n+1)/2 를 쓸수 있는거 같은..?
시작숫자 찾기가 어려웠는데 다른사람들 보니 쉽게 찾눈듯 ㅠ
stnum = total // num - num // 2 + (num % 2 == 0) * 1
https://school.programmers.co.kr/learn/courses/30/lessons/120924
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
입출력 예
common | result |
---|---|
[1, 2, 3, 4] | 5 |
[2, 4, 8] | 16 |
def solution(common):
answer = 0
#공차인지 공비인지 판단할때
#공차수열에서 원소에 0이 있는 경우가 있으므로
eql_dff = common[1] - common[0]
if common[2] - common[1] == eql_dff :
return common[len(common)-1] + eql_dff
if common[0] != 0:
eql_rat = common[1] / common[0]
if common[2] / common[1] == eql_rat :
return int(common[len(common)-1] * eql_rat)