프로그래머스 Lv.0 연속된 수의 합

연속된 num개의 정수를 더해 total이 되는 경우에
정수 배열을 오름차순으로 담아 return하라.
** 풀이 방법
연속된 수의 중간값을 가지고 풀이하였다.
total을 num으로 나눴을 때 중간값이 구해진다.
이 중간값의 인덱스 위치를 구해서연속되는 숫자의 시작점을 찾는다.(인덱스 : 홀수일 때는 배열의 중앙에 위치, 짝수는 배열 길이의 중간-1에 위치)
예) num이 홀수일 때
num=3 total=12 result=[3,4,5]
middle = total/num = 4
num=홀수 >> 중간값인 4의 인덱스는 num/2=1번 인덱스
answer 배열에 들어가야 할 첫 숫자는
중간값 - 홀수짝수판별해 나온 중간값의 인덱스로 구해진다.
그래서 결과는!! [3,4,5]가 나오게 된다.
예) num이 짝수일 때
num=4 total=14 result=[2,3,4,5]
middle = total/num = 3
num=짝수 >> 중간값 3의 인덱스는 num/2-1=1번 인덱스
첫 숫자 = middle - 인덱스 = 2
결과는 [2,3,4,5]
<> 전체 코드 </>
class Solution {
public int[] solution(int num, int total) {
int[] answer = new int[num];
int middle = total/num;
int idx = (num % 2 != 0) ? num/2 : num/2-1;
int start = middle - idx;
for (int i=0; i<answer.length; i++) {
answer[i] = start + i;
}
return answer;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 세로 읽기 (0) | 2023.07.24 |
---|---|
프로그래머스 Lv.0 숨어있는 숫자의 덧셈 (2) (0) | 2023.07.24 |
프로그래머스 Lv.0 등수매기기 (0) | 2023.07.23 |
프로그래머스 Lv.0 안전지대 (0) | 2023.07.23 |
프로그래머스 Lv.0 진료순서 정하기 (0) | 2023.07.21 |
댓글