문제 설명
연속된 세 개의 정수를 더해 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] |
입출력 예 설명
입출력 예 #1
- num = 3, total = 12인 경우 [3, 4, 5]를 return합니다.
입출력 예 #2
- num = 5, total = 15인 경우 [1, 2, 3, 4, 5]를 return합니다.
입출력 예 #3
- 4개의 연속된 수를 더해 14가 되는 경우는 2, 3, 4, 5입니다.
입출력 예 #4
- 설명 생략
아이디어
무조건 연속된 수를 더하면 total이 나오는 것이므로 일단은 비효율적이지만 그냥 1부터 num만큼의 숫를 차례로 더해보는 for문을 이용하면 되지 않을까 하고 생각하였다.
근데 너무 비효율적인 것 같고.. 조금만 더 생각을 해보면
total = (더하는 거 시작하는 수 * num )+ (0부터 num-1까지 합)이다.
이 식을 활용하여 코드로 구현해봐야겠다.
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
int sum= 0;
for (int i =1;i < num; i++) {
sum += i;
}
int start = (total - sum ) / num;
for (int j = 0; j < num; j++) {
answer[j] = start + j;
}
return answer;
}
}
+1
'코딩테스트 > 프로그래머스(JAVA)' 카테고리의 다른 글
[프로그래머스][JAVA] Lv0. 특정 문자 제거하기 (0) | 2024.03.24 |
---|---|
[프로그래머스][JAVA] Lv0. 다음에 올 숫자 (1) | 2024.03.24 |
[프로그래머스][JAVA] Lv0. 점의 위치 구하기 (1) | 2024.03.23 |
[프로그래머스][JAVA]Lv0. 피자 나눠 먹기(1) (0) | 2024.03.18 |
[프로그래머스][JAVA]Lv0. [PCCE 기출문제] 8번 / 창고 정리 (1) | 2024.03.18 |