연속된 수의 합

miin·2024년 2월 19일
0

Algorithm

목록 보기
11/14
post-thumbnail

문제

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 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]

접근방법

연속된 숫자의 초기값을 구하고, 이를 바탕으로 연속된 숫자를 찾아내는 것

  1. 초기값 구하는 공식 total / num - (num / 2) , 소수점이 있을수도 있으므로 반올림 적용

    ex) total = 12, num = 3

    1) 평균값을 구함: total / num = 12 / 3 = 4

    2) 연속된 수의 중간값을 구함: (num / 2) = 3 / 2 = 1.5

    3) 연속된 수의 시작값을 구함: 4 - 1.5 = 2.5

    4) 시작 값의 반올림: 3

  1. 초기값에서 num개 만큼 배열 생성

코드

function solution(num, total) {  
	const startNum = Math.ceil((total / num - Math.floor(num / 2)))
 	return Array.from({length:num},(_,i) => i + startNum)
 }
 
 solution(4,14)

0개의 댓글