키워드
- 2부터 N까지 모든 정수를 적는다.
- 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.
- P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.
- 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.
구현
- 해당 문제대로 구현을 하면 된다.
solution
- N+1 크기의 boolean 배열을 생성한다.
- i=2부터 N까지 반복한다.
- i를 지우고, i의 배수를 전부 지운다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class java_2960 {
static int N, K;
static boolean numbers[];
// K번째 지워진 수를 반환하는 메소드
static int solution() {
numbers = new boolean[N + 1];
int count = 0;
for (int i = 2; i <= N; i++) {
if (numbers[i]) {
continue;
}
// i의 배수를 모두 지운다.
for (int j = i; j <= N; j += i) {
if (numbers[j]) {
continue;
}
numbers[j] = true;
count++;
if (count == K) {
return j;
}
}
}
return -1;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
int result = solution();
System.out.println(result);
br.close();
}
}
Uploaded by N2T
'Coding Test > BOJ' 카테고리의 다른 글
[BOJ/JAVA] 1644번: 소수의 연속합 (0) | 2023.02.07 |
---|---|
[BOJ/JAVA] 10830번: 행렬 제곱 (0) | 2023.02.07 |
[BOJ/JAVA] 1822번: 차집합 (0) | 2023.01.30 |
[BOJ/JAVA] 2110번: 공유기 설치 (0) | 2023.01.30 |
[BOJ/JAVA] 2343번: 기타 레슨 (0) | 2023.01.30 |