https://school.programmers.co.kr/learn/courses/30/lessons/12921
풀이 - 나의 생각
소수는 1과 자기 자신으로만 나누어지는 수입니다.
이걸 판별하는 여러가지 방법이 있는데
저는 trial division(시도로 나누기) 방법을 사용했습니다.
n이 주어질때
2부터 n의 제곱근까지만 확인하면 되는겁니다.
예를 들어서
16이 주어질 때
2분터 4(16의 제곱근)까지만 나누어 보면
소수인지 아닌지 판별이 가능한 것을 알 수 있습니다.
코드
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 2; i <=n; i++){
if(isPrimeNumber(i)) answer++;
}
return answer;
}
public static boolean isPrimeNumber(int num){
if(num <= 1) return false;
for(int i = 2; i <= Math.sqrt(num); i++){
if(num%i == 0) return false;
}
return true;
}
}
728x90
'프로그래머스 > Lv.1' 카테고리의 다른 글
코딩테스트 연습 > 푸드 파이트 대회 - JAVA (문자열 뒤집기) (0) | 2024.02.24 |
---|---|
코딩테스트 연습 > 덧칠하기 - JAVA (0) | 2024.02.23 |
코딩테스트 연습 > 월간 코드 챌린지 시즌2 > 약수의 개수와 덧셈 (제곱근 Math.sqrt) (0) | 2024.02.22 |
코딩테스트 연습 > 약수의 합 - JAVA (0) | 2024.01.16 |
코딩테스트 연습 > 이상한 문자 만들기 - JAVA > 실패 해결 (0) | 2024.01.16 |