ALGORITHM

[JAVA] 백준 2018번- 수들의 합 5

연듀 2022. 6. 23. 13:55

 

https://www.acmicpc.net/problem/2018

 

2018번: 수들의 합 5

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

www.acmicpc.net

 

 

이중 for문

 

import java.util.*;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int answer = 0;

        for(int i=1; i<=n; i++){
            int sum = 0;
            for(int j=i; j<=n; j++){
                sum+=j;
                if(sum >n) break;
                else if(sum == n){
                    answer++;
                    break;
                }
            }
        }
        System.out.println(answer);
    }
}

 

 

투포인터

import java.util.*;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int answer = 0;

        int start = 1;
        int end = 1;
        int sum = 1;

        while(start <= end){
            if(sum == n) answer++;
            if(sum < n){
                end++;
                sum+=end;
            }
            else if(sum >= n){
                sum -= start;
                start++;
            }
        }
        System.out.println(answer);
    }
}