문제 설명
연속된 세 개의 정수를 더해 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[] answer = new int[num];
int mid = total / num;
int first;
if (num % 2 == 0) {
first = mid - num / 2 + 1;
} else {
first = mid - num / 2;
}
for (int i = 0; i < num; i++) {
answer[i] = first++;
}
return answer;
}
}
answer의 배열 크기는 num으로 지정합니다.
변수 mid를 생성합니다. 이는 연속된 수의 중앙값으로, total을 num으로 나눈 값을 할당합니다.
변수 first를 생성합니다. 이는 연속된 수에서 첫 번째 값을 담을 것입니다.
if문에서 num을 2로 나눈 나머지가 0이라면, 즉 num이 짝수라면 mid에서 num을 2로 나눈 값을 뺀 뒤 1을 더한 값을 first에 할당합니다.
앞선 조건에 해당하지 않는다면, 즉 num이 홀수라면 mid에서 num을 2로 나눈 값을 뺀 뒤 first에 할당합니다. 연속된 수의 합은 중앙값을 기준으로 양쪽에 수가 분포하고 있을 것입니다.
for문이 num만큼 순회합니다.
answer의 i 번째 인덱스에 first의 증가값을 할당합니다.
'프로그래머스 > Lv. 0(코딩테스트 입문)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 옹알이 (1)(Java) (0) | 2023.07.21 |
---|---|
[프로그래머스 코딩테스트] 특이한 정렬(Java) (0) | 2023.07.17 |
[프로그래머스 코딩테스트] 등수 매기기(Java) (0) | 2023.07.06 |
[프로그래머스 코딩테스트] 구슬을 나누는 경우의 수(Java) (0) | 2023.07.01 |
[프로그래머스 코딩테스트] 문자열 밀기(Java) (0) | 2023.06.25 |