5. 연속된 자연수의 합
N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는
방법의 가짓수를 출력하는 프로그램을 작성하세요.
만약 N=15이면
7+8=15
4+5+6=15
1+2+3+4+5=15
와 같이 총 3가지의 경우가 존재한다.
첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어집니다.
첫 줄에 총 경우수를 출력합니다.
===================================================
연속하는 숫자를 특정 값에서 뺀다. 예를 들어 3개의 숫자가 연속된다고 하면 특정 값에서 1,2,3값을 빼는 것이다. 수를 뺀 특정 값이 3으로 나눴을 때 나머지 값이 0이라면 나눠진다는 뜻이고 나눠진 수 만큼 1,2,3에 각각 더해준다면 연속하는 수가 나온다. 이러한 과정을 반복해서 경우의 수를 구한다.
import java.util.*;
class Main {
public int solution(int n){
int answer=0;
int cnt=1;
n--;
while(n>0) {
cnt++;
n-=cnt;
if(n%cnt==0) answer++;
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
System.out.print(main.solution(n));
}
}
1) 연속하는 수를 빼서 그 값들에 나눈 값을 더해준다는 생각!