728x90
반응형
※ 문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
※ 제한사항
• n은 2이상 1000000이하의 자연수입니다.
※ 입출력 예
n | result |
10 | 4 |
5 | 3 |
※ 입출력 예 설명
입출력 예 #1
• 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
• 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
나의 풀이
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Boolean> list = new ArrayList<>(n+1);
list.add(false);
list.add(false);
for(int i=2; i<=n; i++) {
list.add(i, true);
}
for(int i=2; (i*i)<=n; i++) {
if(list.get(i)) {
for(int j=i*i; j<=n; j+=i) {
list.set(j, false);
}
}
}
for(boolean b : list) {
if(b == true) {
answer++;
}
}
return answer;
}
}
다른 사람의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 2; i <= n; i++){
int j = 2;
int cnt = 0;
while(j <= (int)Math.sqrt(i)){
if(i % j == 0){
cnt += 1;
break;
}
j += 1;
}
if(cnt == 0) answer += 1;
}
return answer;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 소수 만들기 (LV.1) (1) | 2023.02.23 |
---|---|
[프로그래머스][JAVA] 모의고사 (LV.1) (0) | 2023.02.22 |
[프로그래머스][JAVA] 가장 가까운 같은 글자 (LV.1) (0) | 2023.02.21 |
[프로그래머스][JAVA] 푸드 파이트 대회 (LV.1) (0) | 2023.02.20 |
[프로그래머스][JAVA] [1차] 비밀지도 (LV.1) (0) | 2023.02.18 |