[프로그래머스] LEVEL0 연속된 수의 합 파이썬

그린·2023년 2월 18일
0

프로그래머스

목록 보기
9/28
post-thumbnail

[프로그래머스] LEVEL0 연속된 수의 합


✅문제 설명

연속된 세 개의 정수를 더해 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() 함수를 줄 수 있다는 점을 알게되었다.

0개의 댓글