설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.'
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
예시 입력 / 출력
n | result |
10 | 4 |
5 | 3 |
풀이 과정
for문의 조건으로 시간복잡도를 줄인다.
1. for(int i=2; i<num; i++) = 시간 복잡도O(N)
2. for(int i=2; i<=num/2; i++) = 시간 복잡도O(N)
3. for(int i=2; i*i<=num; i++) = 시간 복잡도O(√N) = 가장 효율적
풀이
class Solution {
// 소수 판별
private boolean isPrime(int num){
for (int i = 2; i*i <= num; i++) {
if(num % i == 0) return false;
}
return true;
}
public int solution(int n) {
int answer = 0;
for (int i = 2; i <= n; i++) if(isPrime(i)) answer++;
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스_카카오프렌즈 컬러링북_2017 카카오코드 예선 (0) | 2021.08.24 |
---|---|
[Algorithm] 프로그래머스_오픈채팅방_2019 KAKAO BLIND RECRUITMENT (0) | 2021.08.23 |
[Algorithm] 프로그래머스_실패율_2019 KAKAO BLIND RECRUITMENT (0) | 2021.08.15 |
[Algorithm] 프로그래머스_약수의 개수와 덧셈 (0) | 2021.08.13 |
[Algorithm] 프로그래머스_예산 (0) | 2021.08.13 |