[programmers/py] 연속된 수의 합

승민·2023년 3월 31일

알고리즘

목록 보기
3/171

연속된 수의 합

https://school.programmers.co.kr/learn/courses/30/lessons/120923?language=python3

문제 설명

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다.
두 정수 num과 total이 주어집니다.
연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

풀이 설명

  • num=3, total=12를 예시로 보면
    num을 통해 배열의 길이가 3임을 알 수 있다.
    배열은 0부터 시작하니 [0,1,2]가 처음 answer이 되는데 여기에 +3을 통해 12를 구할 수 있다.

  • +3을 구하는 방법
    간단하게 생각하면 total/num을 통해 중앙 값을 구할 수 있다.
    문제는 중앙 값은 index 1의 값인데 여기서 배열의 길이 num의 평균을 구하면 우리는 중앙 값을 기준으로 앞, 뒤 숫자의 길이를 알 수 있다.
    즉, 4의 평균에 앞 위로 1씩 총 길이가 3인 배열이 answer이다.

  • 전체 풀이
    배열의 중앙 값 - 배열의 평균 길이를 통해 초기 배열에 더할 v를 만들어준다.
    answer의 값에 v를 더해서 반환

import math
def solution(num, total):
    v = math.ceil(total/num - math.floor(num/2))
    answer = [i+v for i in range(num)]
    return answer

0개의 댓글