목차
문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
제한사항
- 1 ≤ num ≤ 100
- 0 ≤ total ≤ 1000
- num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
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] |
class Solution {
public int[] solution(int num, int total) {
int[] result = new int[num];
int sum = 0;
for(int i = 1; i <= num; i++){
sum += num - i;
}
int start = (total - sum) / num;
// 결과 배열 생성
for (int i = 0; i < num; i++) {
result[i] = start + i;
}
return result;
}
}
요즘 모든 문제들을 수식화 할려고 하다보니 문제가 잘 풀리는 것 같다.
이번 문제의 경우 연속된 숫자가 힌트였다.
num = 3, total= 12라고 되어있는데
(x) + (x +1) + (x + 2) = 12 인 것이다.
결국에는 3x +3 = 12 --> 3x = 9이므로 x는 3이다.
3, 3+1, 3+2 = 3, 4, 5 인것이다.
sum은 (x) + (x +1) + (x + 2)에서 1와 2의 합을 말하는 것이다. 이를 수식에 넣어보면
3x + sum = total(3x + 3 = 12)이다.
3x = total - sum(3x = 12 -3)이다.
x = (total - sum) / num이다. x의 계수는 num와 동일하다.
'JAVA > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스, JAVA, LV.0] 겹치는 선분의 길이 (0) | 2024.12.17 |
---|---|
[프로그래머스, LV.0] 안전지대 (0) | 2024.12.15 |
[프로그래머스, LV.0] 다음에 올 숫자 (0) | 2024.12.15 |
[프로그래머스, LV.0] OX퀴즈 (0) | 2024.12.15 |
[프로그래머스, LV.0] 다항식 더하기 (1) | 2024.12.15 |