본문 바로가기
Algorithm/Baekjoon

Baekjoon 2018 수들의 합 5 JAVA

by Hunveloper 2022. 6. 10.
728x90

 

2018번: 수들의 합 5

어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한

www.acmicpc.net

문제

어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다.

예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다.

N을 입력받아 가지수를 출력하는 프로그램을 작성하시오.

입력

첫 줄에 정수 N이 주어진다.

출력

입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 출력하시오

풀이

두 포인터를 이용하여 구간 합을 찾으면서 연속된 자연수의 합으로 N을 나타낼 수 있는 가짓수를 구함

코드
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int l=0,r=1, sum=0, ans=0;
		while(r<=n+1) {
			if(sum==n)
				ans++;
			if(sum<n)
				sum+=r++;
			else
				sum-=++l;
		}
		System.out.println(ans);
	}
}

 

728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 14888 연산자 끼워넣기 JAVA  (0) 2022.06.15
Baekjoon 1343 폴리오미노 JAVA  (0) 2022.06.15
Baekjoon 2468 안전 영역 JAVA  (0) 2022.06.10
Baekjoon 6118 숨바꼭질 JAVA  (0) 2022.06.10
Baekjoon 5567 결혼식 JAVA  (0) 2022.06.10

댓글