본문 바로가기
코딩테스트/자바 Level 0

[Java] 연속된 수의 합

by onggury 2023. 7. 18.

문제

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

 

 

제한사항

  • 1 ≤ num ≤ 100
  • 0 ≤ total ≤ 1000
  • num 개의 연속된 수를 더하여 total 이 될 수 없는 테스트 케이스는 없습니다.

 

class Solution {
    public int[] solution(int num, int total) {
        int[] answer = new int[num];
        int sum;
        int start = -num/2;
        
        do {
            sum = 0;
            int add = start;
            for(int i = 0; i < num; i++) {
                answer[i] = add;
                sum += add++;
            }
            start++;
        } while(sum != total);
        
        return answer;
    }
}

 

처음 시작은 num의 절반 / 2 * (-1), 연속된 수의 절반을 마이너스를 붙인 값부터 시작을 했다.

예를들어 3개의 연속된 수라고 한다면 -1, 0, 1 이 처음 시작 조건이되고

4개의 연속된 수라고 한다면 -2, -1, 0, 1 로 시작을 했다.

5라고 한다면 -2, -1, 0, 1, 2 가 될 것이다.

어짜피 total은 0 이상이라고도 하니 문제될 건 없어보였다.

그렇게 해서 처음 시작하는 수는 마이너스 값을 시작으로 num개의 수 만큼 더해나가서 total과 같은 값을 찾았다.

 

 

출처

https://school.programmers.co.kr/learn/courses/30/lessons/120923