✅문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
✅제한사항
- 1 ≤ num ≤ 100
- 0 ≤ total ≤ 1000
- num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
def solution(num, total):
d=0
for i in range(1, num):
d += i
start=(total-d)//num
answer = [i for i in range(start, start+num)]
return answer
등차수열을 활용해 풀었다.
첫번째 항을 start라고 할 때 n항까지의 합은
start + (start+1) + (start+2) + ... + (start+num-1)이므로
num*start+(1+2+...+num)이다.
위의 식을 바탕으로 코드를 작성해서 풀이했다.
def solution(num, total):
answer = []
var = sum(range(num+1))
diff = total - var
start_num = diff//num
answer = [i+1+start_num for i in range(num)]
return answer
전체적으로 나와 아이디어는 동일한데,
for문을 돌려서 var 값을 찾은 나와 달리 sum(range(num+1))
로 값을 알아냈다.
sum() 함수의 인자로 range() 함수를 줄 수 있다는 점을 알게되었다.