본문 바로가기
코딩테스트/programming_JAVA

[Java] baekjoon_1978 : 소수 찾기

by prometedor 2023. 12. 29.

에라토스테네스의 체 - 소수 찾기 알고리즘

소수 찾기 : Bronze2

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

 

 

 

 

아래 첨부한 이전 포스팅을 참고하여 문제를 풀었다.

 

https://la-reveuse.tistory.com/384

 

[Java] 프로그래머스_42839 : 소수 찾기

완전탐색 소수 찾기 - Level2 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고

la-reveuse.tistory.com

 

 

풀이

import java.io.*;
import java.util.*;

public class Main {
  private static boolean isPrime (int num) {
    if (num <= 1) return false;
    for (int i = 2; i * i <= num; i++) {
      if (num % i == 0) return false;
    }
    return true;
  }

  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int n = Integer.parseInt(br.readLine());

    StringTokenizer st = new StringTokenizer(br.readLine());
    int[] numbers = new int[n];
    for (int i = 0; i < n; i++) {
      numbers[i] = Integer.parseInt(st.nextToken());
    }

    int cnt = 0;
    for (int i = 0; i < n; i++) {
      if (isPrime(numbers[i])) {
        cnt++;
      }
    }

    bw.write(String.valueOf(cnt));
    bw.newLine();
    bw.flush();
    bw.close();
  }
}

 

ㄴ 에라토스테네스의 체 알고리즘을 이용하였다.

 


 

 

문제점 : 에라토스테네스의 체 알고리즘에 아직 익숙하지 않아 잘 기억이 나지 않았다.

해결 방법 : 이전 포스팅을 참고하여 에라토스테네스의 체 알고리즘을 이용해 문제를 풀었다.

깨달은 바 : 에라토스테네스의 체 알고리즘에 더 익숙해지도록 해야겠다.