๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 9753_์ง ๊ณฑ

๋ฟŒ์•ผ._. 2024. 7. 23. 15:23
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/9753)

< ์ง ๊ณฑ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋ฏธ๋ฆฌ 100,000๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์ˆ˜์˜ ๊ณฑ์„ ๊ตฌํ•ด ArrayList์— ์ €์žฅํ•˜์—ฌ ์ •๋ ฌ ํ›„ K๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.    

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;

public class _9753_ { // ์ง ๊ณฑ

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

		int T = Integer.parseInt(bf.readLine());

		boolean arr[] = new boolean[100001];
		for (int i = 2; i <= Math.sqrt(100001); i++) {
			if (!arr[i]) {
				for (int j = i * i; j < 100001; j += i) {
					arr[j] = true;
				}
			}
		}

		ArrayList<Integer> result = new ArrayList<>();
		for (int i = 2; i < 100001; i++) {
			if (arr[i]) {
				continue;
			}
			for (int j = i + 1; j < 100001; j++) {
				if (arr[j]) {
					continue;
				}
				if ((long) i * (long) j > 100001) {
					break;
				}
				result.add(i * j);
			}
		}
		Collections.sort(result);

		for (int i = 0; i < T; i++) {
			int K = Integer.parseInt(bf.readLine());
			for (int num : result) {
				if (num >= K) {
					bw.write(num + "\n");
					break;
				}
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
T : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜
arr : ์†Œ์ˆ˜ ํŒ๋ณ„
result : ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์ˆ˜์˜ ๊ณฑ์„ ์ €์žฅํ•œ ArrayList

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋จผ์ € 2๋ถ€ํ„ฐ 100000๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์ˆ˜์˜ ๊ณฑ์„ ๊ตฌํ•ด ArrayList์— ์ €์žฅํ•œ ํ›„ ์ •๋ ฌํ•œ๋‹ค. K๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ArrayList๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ K๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.