<섹션3-Two pointers, Sliding window> 5. 연속된 자연수의 합

조이·2022년 1월 6일
0

자바 알고리즘

목록 보기
29/41
post-thumbnail

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) 연속하는 수를 빼서 그 값들에 나눈 값을 더해준다는 생각!

profile
joy_study

0개의 댓글