본문 바로가기
개발로그/알고리즘

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

by 쩜징 2023. 7. 24.

프로그래머스 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;
    }
}

 

반응형

댓글