Java

#13 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 연속된 자연수의 합

kminnnee 2023. 7. 26. 23:50

N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성

 

만약 N=15이면
7+8=15
4+5+6=15
1+2+3+4+5=15


와 같이 총 3가지의 경우가 존재한다.

< 입력 >
15
< 출력 >
3
import java.util.Scanner;

public class Inflearn29 {
    public int solution(int N,int A[]) {
        int answer = 0;
        int sum =0;
        int lt =0;
        for(int rt=0; rt<N/2+1; rt++) {         // 1 ~ 8
            sum += A[rt];
            if(N == sum) {
                answer ++;
            }

            while(sum>=N) {
                sum -= A[lt++];
                if(sum == N) {
                    answer ++;
                }
            }

        }
        return answer;
    }

    public static void main(String[] args) {
        Inflearn29 inflearn29 = new Inflearn29();
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();      // 정수 입력 -> 15
        int[] A = new int[N];
        for(int i=0; i<N/2+1; i++){       // 0 ~ 8
            A[i] = i+1;                    // 배열에 1,2,3,4,5,6,7,8 저장
        }
        System.out.println(inflearn29.solution(N,A));


    }
}

 

출처 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84/dashboard

 

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com