문제
연속된 세 개의 정수를 더해 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