Competition/Baekjoon

[백준] 1644번 자바 소수의 연속합

bisi 2020. 4. 19. 12:06
문제 출처 

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

 

1644번: 소수의 연속합

문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- 주어진 n만큼의 소수를 구한다.

 

- 구한 소수로 더해가며 n만큼 나오면 count를 증가한다.

 

- 참고블로그

 

 

 

 

소스 코드 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.util.Scanner;
 
public class Main {
 
    private static ArrayList<Integer> primes;
    public static boolean[] primeNumcheck;
    private static int n;
    private static int cnt;
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        // 소수 구하기
 
        primeNumcheck = new boolean[n+1];
        primes = new ArrayList<Integer>();
 
        primeNumcheck[0]=primeNumcheck[1]=true;
        for(int i =2; i*i<=n; i++){
            if(!primeNumcheck[i]){
                for (int j = i*i; j <=n ; j += i) {
                    primeNumcheck[j]=true;
                }
            }
        }
        for (int i = 1; i <=n ; i++) {
            if(!primeNumcheck[i]){
                primes.add(i);
            }
        }
 
 
        int start = 0;
        int end = 0;
        int sum = 0;
        int count = 0;
        while (true){
            if(sum >= n){
                sum -= primes.get(start++);
            }else if(end == primes.size()){
                break;
            }else {
                sum += primes.get(end++);
            }
            if(n==sum){
                count++;
            }
        }
 
        System.out.println(count);
 
 
 
 
    }
}
 

 

 

결과 

 

'Competition > Baekjoon' 카테고리의 다른 글

[백준] 1697번 자바 숨박꼭질  (0) 2020.04.19
[백준] 1525번 자바 퍼즐  (0) 2020.04.18
[백준] 1107번 자바 리모컨  (0) 2020.04.17