코드와이
[BAEKJOON] 1644. 소수의 연속합 본문
문제링크
https://www.acmicpc.net/problem/1644
1644번: 소수의 연속합
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)
www.acmicpc.net
package acmicpc.Gold3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class 소수의_연속합 {
static List<Integer> list;
static int n, ans;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
// 에라토스테네스의_체 알고리즘
List<Boolean> prime = new ArrayList<>();
prime.add(false);
prime.add(false);
for(int i = 2 ; i <= n ; i++) {
prime.add(true);
}
for(int i = 2 ; i*i <= n ; i++) {
if(prime.get(i)) {
for(int j = i * i ; j <= n ; j += i) {
prime.set(j, false);
}
}
}
list = new ArrayList<>();
for(int i = 2 ; i <= n ; i++) {
if(prime.get(i)) {
list.add(i);
}
}
ans = 0;
int startIdx = 0;
int endIdx = 0;
int sum = 0;
// 투 포인터 알고리즘
while(true) {
if(sum >= n) {
sum -= list.get(startIdx++);
} else if(endIdx == list.size()) break;
else {
sum += list.get(endIdx++);
}
if(sum == n) ans++;
}
System.out.println(ans);
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 17144. 미세먼지 안녕! (0) | 2021.06.22 |
---|---|
[BAEKJOON] 5014. 스타트링크 (0) | 2021.06.20 |
[BAEKJOON] 2146. 다리 만들기 (0) | 2021.06.16 |
[BAEKJOON] 11066. 파일 합치기 (0) | 2021.06.16 |
[BAEKJOON] 16234. 인구 이동 (0) | 2021.06.16 |