백준 1978: 소수 찾기

 

 

 

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
33
34
35
36
37
38
39
package Beak;
 
import java.util.Scanner;
 
 
public class Math_1978 {
    
    
    static int decimal(int[] a) {
        int idx = 0, cnt = 0;
        
            for(int i=0; i<a.length; i++) {
                if(a[i] > 1) {
                    for(int j=1; j<=a[i]; j++
                        if(a[i] % j == 0) cnt++;
                    if(cnt == 2)
                        idx++;
                }
                cnt = 0;        
        }
        return idx;
    }
    
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        
        int[] a = new int[n];
        
        for(int i=0; i<n; i++) {
            a[i] = sc.nextInt();
        }
        
        System.out.println(decimal(a));
    }
}
 
cs

 

 

간단하게 생각했는데 풀이법을 잘못 접근하여 오래걸린 문제

처음에는 1과 자기자신의 수를 뺀 모든 수에 대해서 나머지가 0으로 떨어지면 소수가 아니다라는 것을 이용하여 풀어보았지만 이것저것 조건식이 많이 붙게 되어 깔끔하게 풀리지 않았다.

고민하다 1과 자기자신으로만 떨어지는 수를 구하는것으로 바꾸었고 cnt 변수를 활용해 나머지가 0일때 cnt를 하나씩 중가시켰다. 소수는 1과 자기자신만 0으로 나누어 떨어져야 하므로 cnt가 2가되는 수가 소수가 되는것이다.

 

'BeakJoon' 카테고리의 다른 글

백준 2581: 소수  (0) 2020.09.05
백준 15596 : 정수 N개의 합  (0) 2020.08.28
백준 4673 : 셀프 넘버  (0) 2020.08.28
백준 1193 : 분수 찾기  (0) 2020.08.28
백준 2775 : 부녀회장이 될테야  (0) 2020.08.28
TAGS.

Comments