연속된 수의 합

김세호·2022년 12월 8일
0

문제


내 풀이

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씩 증가시켜 넣어준다.

0개의 댓글