코딩 테스트
[백준] 1978번 소수 찾기 - 실버 5
한 면만 쓴 종이
2023. 1. 14. 23:04
뭐가 잘못된걸까..?
import java.util.Scanner;
public class B1978 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = s.nextInt(), res = 0;
int[] arrayN = new int[num];
for (int i = 0; i < num; i++) {
arrayN[i] = s.nextInt();
}
System.out.println(prime(arrayN));
}
static int prime(int[] arrayN) {
int res = arrayN.length;
for (int n : arrayN) {
if (n == 1) {
res--;
break;
}
else if (n == 2) {
break;
}
else {
for (int i = 2; i <= (n / 2) + 1; i++) {
System.out.println("진입");
if (n % i == 0) {
res--;
break;
}
}
}
}
return res;
}
}
흠... 2로 나누어 떨어지는 거를 못 잡는거 같다 ...
멍청한 짓을 했군.. break를 남발하다니...
import java.util.Scanner;
public class B1978 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = s.nextInt(), res = 0;
int[] arrayN = new int[num];
for (int i = 0; i < num; i++) {
arrayN[i] = s.nextInt();
}
System.out.println(prime(arrayN));
}
static int prime(int[] arrayN) {
int res = arrayN.length;
for (int n : arrayN) {
if (n == 1) {
res--;
}
else if (n != 2) {
for (int i = 2; i <= (n / 2) + 1; i++) {
if (n % i == 0) {
res--;
break;
}
}
}
}
return res;
}
}
따흑 드디어 성공!!
근데 코드가 너무 지저분하다..
기깔나는 코드를 짜고싶은데 ㅠ
그래서..! 찾아보았다
[백준] 1978번 : 소수 찾기 - JAVA [자바] (tistory.com)
[백준] 1978번 : 소수 찾기 - JAVA [자바]
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 드디어 새로운 카
st-lab.tistory.com
아니 무슨 소수 찾기에 이렇게 .. 해야지 그치 ㅇㅇ
방법2! 너로 정했다!!
제곱근을 이용한 판별법..
합성수 Number = A x B 에서 A와 B 중 적어도 하나는 Number의 제곱근보다 작거나 같다!
오.. 꽤나 당연한데 생각하지 못한 것이군..
import java.util.Scanner;
public class B1978Ans {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = s.nextInt();
int[] arrayN = new int[num];
for (int i = 0; i < num; i++) {
arrayN[i] = s.nextInt();
}
System.out.println(prime(arrayN));
}
static int prime(int[] arrayN) {
int cnt = arrayN.length;
for (int n : arrayN) {
if (n == 1) cnt--;
else if (n != 2)
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
cnt--;
break;
}
}
}
return cnt;
}
}
맞았당..
근데 속도는 처음에 한게 더 빠르다... 역시 노가다가 속도는 빠른건가
위 글에서 BufferedReader 쓰는게 속도가 훨씬 빠르다는데.. 눈 아파서 내일 해봐야징