본문 바로가기
Algorithm/BaekJoon[Java]

백준 1929

by 씨니 2022. 4. 1.
728x90

▶ 1929번 문제 - 소수 구하기

 

▶ 풀이방법

import java.util.*;
import java.io.*;
public class Main{
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		Stack<Integer> stack = new Stack<>();
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		int m = Integer.parseInt(st.nextToken());
		int n = Integer.parseInt(st.nextToken());
		
		for(int i = n; i >= m; i--) stack.push(i);
		
		while(!stack.isEmpty()) {
			int num = stack.pop();
			int ck = 0;
			for(int i = 2; i <= Math.sqrt(num) ; i++) {
				if(num % i == 0) {
					ck++;
					break;
				}
			}
				
			if(num > 1  && ck == 0) bw.write(String.valueOf(num) + "\n");	
		}
		
		bw.flush();
		bw.close();
		br.close();
	}
}

++ num이 소수인지 아닌지 판별하는 for문에서 범위를 2~num까지를 가지고 판별했는데, 시간초과오류발생.

++ 범위를 2~num의 제곱근 까지의 숫자( Math.sqrt(num) )로 수정해 판별하는 시간을 줄여 시간초과오류 해결할 수 있었음.

728x90

'Algorithm > BaekJoon[Java]' 카테고리의 다른 글

백준 11653  (0) 2022.04.02
백준 10872  (0) 2022.04.01
백준 1978  (0) 2022.04.01
백준 11576  (0) 2022.04.01
백준 1212  (0) 2022.04.01