코딩테스트 연습 - 연속된 수의 합 | 프로그래머스 스쿨 (programmers.co.kr)
연속된 수의 합
문제 설명
연속된 세 개의 정수를 더해 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
정답 공개
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
int i1 = (total / num) + (1 - num) / 2;
for(int i = 0; i < num; i++){
answer[i] = i1++;
}
return answer;
}
}
문제 풀이
- 연속된 숫자 구하기 (홀수일경우 짝수일경우 고려)
- ( 전체수 / 입력수 ) + (1(짝수고려)- num) / 2 --> 문제 해결방식
- for문 돌려서 나온 숫자를 answer에 대입하기.
예를들어서 num = 2, total = 15이면 7, 8이 나와야한다.
위 공식에 대입해보자.
(15 / 2) + (1 - 2) / 2 -> 7 + 0 = 7
for문이 두번돌으므로 (num만큼) 7, 7++ (8)
다른 예시도 들어보겠다.
num = 4, total = 14의 경우
(14 / 4) + (1 - 4) / 2 -> 3 + (-1) = 2
for문은 num 숫자만큼 돌기 때문에, 4번돈다
즉, 2, 3, 4, 5
정확성 테스트
테스트 1 〉 |
통과 (0.02ms, 72.8MB) |
테스트 2 〉 |
통과 (0.02ms, 73.5MB) |
테스트 3 〉 |
통과 (0.02ms, 79.3MB) |
테스트 4 〉 |
통과 (0.01ms, 74.4MB) |
테스트 5 〉 |
통과 (0.02ms, 75.2MB) |
테스트 6 〉 |
통과 (0.02ms, 78.3MB) |
테스트 7 〉 |
통과 (0.01ms, 71.8MB) |
테스트 8 〉 |
통과 (0.02ms, 76.5MB) |
테스트 9 〉 |
통과 (0.02ms, 77.5MB) |
테스트 10 〉 |
통과 (0.02ms, 66.3MB) |
채점 결과
정확성: 100.0
합계: 100.0 / 100.0