[백준] 1644 소수의 연속합

장철현·2024년 1월 7일
0

백준

목록 보기
46/80

링크

1644 소수의 연속합

문제

업로드중..

풀이

이해는 쉬운 문제이다.
나는 n까지 소수의 배열을 만들어 놓고 시작 인덱스를 0부터 시작해서 인덱스 0, 1, 2 쭉 더하면서 n을 넘으면 다시 시작 인덱스를 1로 시작해서 1, 2, 3 쭉 더하고 같으면 count를 올려주고 break를해서 인덱스를 2로 시작... 이런식으로 반복했다.

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;


public class Test4{
    public static List<Integer> sosuList = new ArrayList<>();

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


        for (int i = 2; i <= n; i++) {
            if (sosu(i)) {
                sosuList.add(i);
            }

        }

//        System.out.println(sosuList);


        int start = 0;
        int count = 0;
        int sum = 0;

        while(start <= n){

            for(int i=start;i< sosuList.size();i++){
                sum += sosuList.get(i);

                if(sum == n){
                    count++;
                    sum = 0;
                    break;
                }

                if(sum > n){
                    sum = 0;
                    break;
                }
            }
            start++;

        }


        System.out.println(count);
    }

    //에라토스테네스의 체
    public static boolean sosu(int n){

        for(int i=2;i<=Math.sqrt(n);i++){
            if(n % i == 0) return false;
        }

        return true;
    }

}

0개의 댓글