class Solution { public int[] solution(int num, int total) { int[] answer = {}; answer = new int[num]; int a = 0 ; //첫항 a int sumD = 0 ; //공차의 총 합 sumD for (int d = 1 ; d<=num-1;d++ ){ sumD += d; } a = (total-sumD)/num; for(int i = 0 ; i <num ; i++){ answer[i]= a+i; } return answer; } }
예를들어 num = 4, total = 14 가 주어졌다.
- 연속된 수 4개중 첫번 째 숫자를 문자 a라 하면 연속된 4개의 수는 a, a+1 , a+2, a+3 이 된다.
- 이를 수식으로 하면 total = a + (a+1) + (a+2) + (a+3) 이를 통해 첫번 째 숫자 a를 구할 수 있다.
- 이를 다시 쓰면 total = num*첫번째숫자 + (0 부터 (num-1) 까지의 연속된 정수의 합) 으로 나타 낼 수 있다. (0 부터 (num-1) 까지의 연속된 정수의 합을 sumD로 정했다.)
- 첫번째 숫자 = (total - (0 부터 (num-1) 까지의 연속된 정수의 합))/num 으로 나타 낼 수 있다. (a = (total - sumD) / num )
- answer[] 배열의 첫번째 원소를 a부터 시작하여 1씩 증가시켜 넣어준다.