Leetcode Java Consecutive Numbers Sum

업데이트:

문제

Link

코드

class Solution {

  public int consecutiveNumbersSum(int n) {
    int result = 1;
    while (n % 2 == 0) {
      n /= 2;
    }
    for (int idx = 3; idx * idx <= n; idx += 2) {
      int count = 1;
      while (n % idx == 0) {
        n /= idx;
        count++;
      }
      result *= count;
    }
    return n == 1 ? result : result * 2;
  }


}

결과

Link

설명

  1. 연속된 숫자의 합으로 n을 만들 수 있는 경우의 수를 구하는 문제이다.

  2. reulst는 결과를 저장할 변수로, 자기 자신의 개수를 포함한 1로 초기화한다.

  3. n을 2로 나눈 나머지가 없을 때까지 나누어 상한선을 정의한다.

  4. 3부터 idx의 제곱이 n보다 작을 때 까지 2씩 증가하면서 아래를 반복한다.
    • count는 개수를 산정할 변수로, 1로 초기화한다.
    • n을 idx로 나눈 나머지가 0일 때 까지 n을 idx로 나누고 count를 증가시킨다.
    • result에 count를 곱해준다.
  5. n이 1이면 result를, 아니면 result의 2배를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기