백준 1978문제


시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초128 MB66983500290055.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

댓글

이 블로그의 인기 게시물

Filter url 제외시키기

[Spring,Java] Validator 구현하기

[Spring] Mock framework에 대하여