티스토리 뷰
💻JAVA 코드 바로보기
□문제 설명
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를 반환
🌼JAVA 알고리즘
□초기화면

□풀이과정
흔히 알고있는 소수찾기 알고리즘(이중포문 사용)을 써보았으나 큰 수의 경우에서 시간초과가 되었고, 효율성 검사가 0점으로 나왔다. => 시간복잡도 O(n) |
class Solution {
public int solution(int n) {
int answer = 0;
boolean value=false;
for(int i=2; i<=n; i++) {
value = true;
for(int j=2; j<=i/2; j++) {
if(i % j == 0) {
value = false;
break;
}
}
if(value) {
answer++;
}
}
return answer;
}
}

□풀이과정
에라토스테네스의 체 알고리즘 => 2부터 시작하여 자기 자신을 체에 걸러주는 알고리즘 => 이때 '체로 걸러낸다'는 배열에 0을 넣어주는것으로 구현한다. 1) n+1크기의 배열을 생성한다. 2) 2부터 차례대로 배수들을 체로 걸러낸다. 3) 배열값이 0이 아닐때(체에 남아있는 수) 개수를 추가한다. |
▶ 생각보다 자세한 설명이라 놀랐다..!! 각 언어별 알고리즘이랑 소수찾기 모든 알고리즘 설명이 있다..!
에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전
수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서
ko.wikipedia.org
class Solution {
public int solution(int n) {
int answer = 0;
int[] numbers = new int[n+1];
for(int i=2; i<=n; i++) numbers[i]=i;
for(int i=2; i<n; i++) {
if(numbers[i] == 0) continue;
for(int j=2*i; j<=n; j+=i) numbers[j] = 0;
}
for(int i=0; i<numbers.length; i++) {
if(numbers[i] != 0) answer++;
}
return answer;
}
}
□링크
코딩테스트 연습 - 소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상
programmers.co.kr
About Me
💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com
code-review.tistory.com
'[코테] > [Programmers Lv1]' 카테고리의 다른 글
[Programmers] Lv1_폰켓몬 (JAVA) (0) | 2021.07.16 |
---|---|
[Programmers] Lv1_시저 암호 (JAVA) (0) | 2021.07.15 |
[Programmers] Lv1_행렬의 덧셈 (JAVA) (0) | 2021.07.14 |
[Programmers] Lv1_문자열 내 마음대로 정렬하기 (JAVA) (0) | 2021.07.14 |
[Programmers] Lv1_x만큼 간격이 있는 n개의 숫자 (JAVA/C++) (2) | 2021.07.13 |
- programmers
- 코스프로
- CosPro
- 구름에듀
- c언어 기출문제
- cospro기출
- c언어
- YBM기출
- 연습문제
- 구름 기출문제
- 1급
- 자바
- C
- C++
- Java
- 코딩테스트
- lv2
- COSPRO 2급
- cospro기출문제
- 프로그래머스
- YBM
- Cos Pro
- 기출문제
- 배열활용문제
- 구름에듀 기출문제
- 배열
- lv1
- 알고리즘
- groom
- groomedu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |