백준 2018. 수들의 합5

WooHyeong·2023년 5월 13일
0

Algorithm

목록 보기
21/41

문제 2018. 수들의 합5

문제

입력 값 N이 주어졌을때, 연속된 수들의 합으로 N을 나타낼 수 있는 경우의 수를 구하여라.

입력

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

출력

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

풀이

연속된 수들의 합이 N이 되는 경우이기 때문에, N이하의 자연수들의 합으로 구할 수 있는 경우의 수를 구하면 된다.
1부터 순차적으로 더한 값 sum이 N보다 클 경우 가장 앞에 있는 수(start)부터 sum에서 지워주면 된다.
반대로 sum이 N보다 작을 경우에는 다음 값(end)를 계속해서 더해주는 것을 반복하여 N이 되는 경우를 찾아간다.

코드 풀이 java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class boj2018{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        int start = 1;
        int end = 1;
        int sum = 0;
        int result = 1;

        while (end <= n) {
            if (sum < n) {
                sum += end;
                end++;
            }
            else if (sum > n) {
                sum -= start;
                start++;
            }
            else {
                result++;
                sum += end;
                end++;
            }
        }

        System.out.println(result);
    }
}
profile
화이링~!

0개의 댓글