본문 바로가기
Java/프로그래머스

[프로그래머스][JAVA] 연속된 수의 합

by 2D3 2023. 1. 26.
728x90

 

Contents

    연속된 정수 num개를 더해 total이 되는 정수 배열

     

    문제 설명

    연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

     

    제한사항

    • 1 ≤ num ≤ 100
    • 0 ≤ total ≤ 1000
    • num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.

     

    입출력 예 설명

    입출력 예 #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]입니다.


     

    설계 / 아이디어

    1. total을 num으로 나누면 중간값이 나온다.
    2. 연속된 숫자이므로 중앙값에서 중앙값의 위치를 빼면 첫번째 값이 나온다.

     

    문제 풀이

    class Solution {
        public int[] solution(int num, int total) {
    
            int[] answer = new int[num];
    
            // total에서 num을 나누면 중앙값
            int median = total / num;
    
            // 짝수일 때와 홀수일 때 중앙값의 위치: median에서 빼면 시작 숫자가 나옴
            int subtract = total % num == 0 ? num / 2 : num / 2 - 1;
            int start = median - subtract;
    
            for (int i = 0; i < num; i++) {
                answer[i] = start + i;
            }
            return answer;
        }
    }

     

    728x90

    댓글