seong_hye, the developer

[백준] 1978번 - 소수 찾기 본문

알고리즘 코드

[백준] 1978번 - 소수 찾기

seong_hye 2021. 6. 28.

 

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2초 128MB 73846 34885 28528 48.179%

 

문제

 

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

 

입력

 

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

 

출력

 

주어진 수들 중 소수의 개수를 출력한다.

 

예제 입력

 

4 1 3 5 7

 

예제 출력

 

3


느낀점

 

소수란? 1이랑 자기 자신만 약수로 가지는 수이다.

이를 정확히 이해해야 풀 수 있는 문제로 1에서 숫자 자신의 크기만큼 반복하면서 자기자신을 수만큼 나누는 것을 반복하며 약수의 개수를 파악하는 것이 포인트였다.

하지만 푸는 도중 계속해서 실패해 잘못 풀었나 생각했는데 초기화를 안했다는 것을 뒤늦게 깨달았다.

하나만 생각하지 말고 끝까지 생각하기~~

 

작성 코드
import java.util.*;

public class Main {
    public static void main(String args[]){

        Scanner in = new Scanner(System.in);

        int num = in.nextInt(); // 개수 받아오기
        int numCnt = 0; // 약수 개수
        int result = 0; // 소수 개수

        for (int i = 0; i < num; i++) { // 개수만큼 반복
            int num2 = in.nextInt(); //알아볼 숫자 받아오기
            numCnt = 0; // 약수 초기화

            for (int j = 1; j <= num2; j++) { // 1부터 숫자까지 반복
                if (num2 % j == 0) // 만약 숫자가 나눠떨어지면 약수라는 의미
                   numCnt++; // 약수 개수 더하기
            }

            if (numCnt == 2) // 약수 개수가 2개라는 것은 1과 자기자신이므로 소수
                result++; //소수 개수 더하기
        }
        System.out.print(result);
    }
}

 

'알고리즘 코드' 카테고리의 다른 글

[백준] 10430번 - 나머지  (0) 2021.06.28
[백준] 2609번 - 최대공약수와 최소공배수  (0) 2021.06.28
Comments