코딩테스트/[백준] 코딩테스트 연습

소수의 연속합 - 1644번

쵼쥬 2022. 4. 12. 17:01


내 코드

package com.company;

import java.io.*;
import java.util.*;

public class Main {

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

        ArrayList<Integer> list = new ArrayList<>();
        boolean[] visited = new boolean[N + 1];

        for (int i = 2; i <= N; i++) {
            int x = 2 * i;
            if (!visited[i]) {
                list.add(i);
            }
            while (x <= N) {
                visited[x] = true;
                x += i;
            }
        }

        int a = 0;
        int x = 0;

        for (Integer integer : list) {
            x += integer;
            if (x == N) {
                count++;
            }
            while (x > N) {
                x -= list.get(a++);
                if (x == N) {
                    count++;
                }
            }
        }
        System.out.println(count);
    }
}