백준 1978문제
소수 찾기
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 6698 | 3500 | 2900 | 55.737% |
문제
주어진 숫자들 중 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력
4 1 3 5 7
예제 출력
3
문제해결방법
1. 소수의 정의
소수란 어떤수를 나누었을 때 몫을 "1"과 자시자신을 갖는 수를 일컫는다.
이 문제에 소수의 정의를 이용해보자.
먼저 Input 첫째 줄은 소수를 몇개 받아올 것인지를 받는다.
그다음 소수를 입력해야하는데 한 문장으로 스캔을 해야한다
이 수를 나눠야하는데 나눌수있는 좋은 기준은 띄어쓰기를 기준으로해서 나누는 것이다.
String배열 str을 선언한 다음에 split메소드를 사용해서 숫자를 나누어주었다.
그리고 주요 알고리즘에는 소수 N이 있다고 가정했을 때 1~N까지 나눠서 몫이 0이 되면 count++을 해주었다.
만약 count가 2가 되면 그 수는 소수가 되는 알고리즘을 이용하였다.
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
31
32
|
import java.util.ArrayList;
import java.util.Scanner;
public class BAEKJOON1978 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
s.nextLine();
String[] str = s.nextLine().split(" ");
ArrayList<Integer> list = new ArrayList<>();
int count=0;
for(int i=0; i<str.length; i++) {
for(int j=1; j<=Integer.parseInt(str[i]); j++)
{
if(Integer.parseInt(str[i]) % j == 0)
count++;
}
if(count == 2) {
list.add(Integer.parseInt(str[i]));
}
count=0;
}
System.out.println(list.size());
}
}
| cs |
댓글
댓글 쓰기