본문 바로가기
algorithm/Programmers

[JAVA] 연속된 수의 합

by 이쟝 2023. 4. 11.

문제 설명

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


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

 

입출력 예numtotalresult
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

  • 설명 생략

풀이코드

  • total/num을 하게 되면 result의 중간 숫자가 나온다.
  • 중간 숫자의 앞 뒤로 구하면 된다..!
  • (num-1)/2 를 하게 되면
    • 앞 숫자와 뒷 숫자 +1, -1을 할 지 아니면 앞 숫자와 뒷 숫자 +2, -2를 할지..! 나옴
  • total/num 에서 (num-1)/2를 빼게 되면 시작하는 숫자가 나옴!
class Solution {
    public int[] solution(int num, int total) {
        int[] answer = new int[num];
        int startNum = (total/num) - ((num - 1)/2);
        for(int i=0; i<num; i++) {
            answer[i] = startNum++;
        }
        return answer;
    }
}

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 문자열 밀기  (0) 2023.04.15
[JAVA] 햄버거 만들기  (0) 2023.04.14
[JAVA] 달리기 경주  (0) 2023.04.11
[JAVA] H-index  (0) 2023.04.04
[JAVA] 가장 큰 수  (0) 2023.04.04