문제 링크
1. 문제 설명
연속된 세 개의 정수를 더해 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] |
2. 풀이
입출력 예를 보면 total / num의 값은 항상 result에 포함되어 있는 것을 볼 수 있다.
그래서 나눈 값(A)에서 num 값만큼 +1씩 해서 모두 더해 total 숫자와 같은지 비교했다.
만약,
모두 더한 값 > total일 땐, A -=1 를 해서 위 내용을 반복했고
모두 더한 값 < total 일 땐, A +=1 를 해서 위 내용을 반복했다.
예를 들어,
num: 3 total:12 일 때, total/num = 4이고 num은 3이니까
4+(4+1)+(4+2) = 15 -> 15는 total(12)보다 크니까
4 -=1 를 해서 3부터 다시 시작
3+(3+1)+(3+2) = 12 -> 12 == total 정답
3. 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int[] solution(int num, int total)
{
int[] answer = new int[num];
int start = total / num;
while (true)
{
int sum = 0;
for (int i = 0; i < num; i++)
{
answer[i] = start + i;
sum += start + i;
}
if(sum == total)
{
return answer;
}
if (sum > total)
start--;
else
start++;
}
}