프로그래머스 코딩테스트 연습 ( 숫자의 표현, java)
class Solution {
public int solution(int n) {
int answer = 0;
int i=1;
double x;
while(i<=n){
x = ((2*n-Math.pow(i,2)+i)/(2*i));
if(x>0 && (x%1)==0){
answer++;
i++;
}
else i++;
}
return answer;
}
}
/* 연속된 숫자의 갯수가 i일때, x+(x+1)+(x+2) ... (X+i-1) 만큼 더한 수가 n이 나오면 result값이 증가한다.
따라서 위 식을 정리하면 i*x + {i(i-1)/2} = n 이라는 x에 대한 방정식을 세울 수 있고, 이 x(double)값을 1로 나눴을 때
나머지가 0이면 위 식을 만족하는 자연수 x가 존재한다고 볼 수 있다. */
댓글