class Solution {
public int solution(int n) {
boolean[] isPrime = new boolean[n+1];
int answer = 0;
for(int i = 2; i <= n; i++){
isPrime[i] = true;
}
for(int i = 2; i * i <= n; i++){
if(isPrime[i]) {
for(int j = i * i ; j <= n; j += i) { // i의 배수 중 아직 안 지운 것들의 시작점 : i * i
isPrime[j] = false;
}
}
}
for(int i = 2; i <= n; i++){
if(isPrime[i])answer += 1;
}
return answer;
}
}
'Java' 카테고리의 다른 글
[백준] 14890 : 경사로 (0) | 2025.04.01 |
---|---|
[프로그래머스] 연속 펄스 부분 수열의 합 (0) | 2025.04.01 |
GCD, LCM 구하기 : 유클레드 호제법, a*b / gcd(a,b) (0) | 2025.03.30 |
[코드트리] 경험치를 빠르게 얻기 (0) | 2025.03.29 |
[백준] 1162 : 도로포장 (0) | 2025.03.27 |