백준 2960 에라토스테네스의 체 (Java)

김주현·2019년 12월 30일
0

풀이
소수를 저장 할 N+1개의 boolean배열을 만들어 2부터 N개까지 true로 세팅시켜준 후 이중 for문을 통해 2부터 차례대로 N까지의 배수자리의 배열을 false로 만들어주며 제거시켜주는데 이 때 제거 시 count를 세어 K값이 되었을 때 출력후 종료시킨다. (종료시키는 이유는 끝까지 돌면서 배열을 지울 시간을 쓸 필요가 없기 때문)

소스코드

public class Baekjoon2960_PrimeNum {
  static public void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      int N = sc.nextInt();
      int K = sc.nextInt();
      boolean[] primeNum = new boolean[N+1];

      int count = 0;

      for(int i = 2; i <= N; i++) {
          primeNum[i] = true;
      }

      for(int i = 2; i <= N; i++) {
          for(int j = i; j <= N; j += i) {
              if(!primeNum[j])
                  continue;
              primeNum[j] = false;
              count ++;
              if(count == K) {
                  System.out.println(j);
                  System.exit(0);
              }
          }
      }
  }
}
profile
Hello World

0개의 댓글