설명
N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요.
만약 N=15이면
7+8=15
4+5+6=15
1+2+3+4+5=15
와 같이 총 3가지의 경우가 존재한다.
입력
첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어집니다.
출력
첫 줄에 총 경우수를 출력합니다.
예시 입력 1
15
예시 출력 1
3
제출1
public static int solution(int n){
int answer = 0;
int curr = 0;
int p1=1, p2=1;
while(p1<n && p2<n ){
curr += p2++;
if(curr == n){
answer++;
curr = 0;
p2 = p1+1;
p1+=1;
}else if(curr > n){
p2 = p1+1;
p1+=1;
curr = 0;
}
}
return answer;
}
제출2
public static int solution(int n) {
int answer=0, lt=0, sum=0;
int m = (n/2)+1;
int[] arr = new int[m];
for(int i=0;i<m;i++) arr[i]=i+1;
for(int rt=0;rt<m;rt++) {
sum += arr[rt];
if(sum==n) answer++;
while (sum >= n) {
sum -= arr[lt++];
if (sum == n) answer++;
}
}
return answer;
}728x90