Leetcode Java Consecutive Numbers Sum
업데이트:
문제
코드
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;
}
}
결과
설명
-
연속된 숫자의 합으로 n을 만들 수 있는 경우의 수를 구하는 문제이다.
-
reulst는 결과를 저장할 변수로, 자기 자신의 개수를 포함한 1로 초기화한다.
-
n을 2로 나눈 나머지가 없을 때까지 나누어 상한선을 정의한다.
- 3부터 idx의 제곱이 n보다 작을 때 까지 2씩 증가하면서 아래를 반복한다.
- count는 개수를 산정할 변수로, 1로 초기화한다.
- n을 idx로 나눈 나머지가 0일 때 까지 n을 idx로 나누고 count를 증가시킨다.
- result에 count를 곱해준다.
- n이 1이면 result를, 아니면 result의 2배를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기