๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 3896_์†Œ์ˆ˜ ์‚ฌ์ด ์ˆ˜์—ด

๋ฟŒ์•ผ._. 2024. 2. 27. 22:41

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/3896)

< ์†Œ์ˆ˜ ์‚ฌ์ด ์ˆ˜์—ด >

 

๋ฌธ์ œ ํ’€์ด 

 

๋จผ์ € ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•œ๋‹ค.

k๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ์ˆ˜๊ฐ€ ํ•ฉ์„ฑ์ˆ˜์ธ์ง€ ๋จผ์ € ํŒ๋‹จ ํ›„ ํ•ฉ์„ฑ์ˆ˜๋ผ๋ฉด k๋ฅผ ํฌํ•จํ•˜๋Š” ์†Œ์ˆ˜ ์‚ฌ์ด ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class _3896_ { // ์†Œ์ˆ˜ ์‚ฌ์ด ์ˆ˜์—ด

	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[1299710];
		arr[0] = true;
		arr[1] = true;
		for (int i = 2; i < 649856; i++) {
			if (!arr[i]) {
				for (int j = i + i; j < 1299710; j += i) {
					arr[j] = true;
				}
			}
		}

		for (int i = 0; i < t; i++) {
			int k = Integer.parseInt(bf.readLine());

			if (!arr[k]) {
				bw.write(0 + "\n");
			} else {
				int cnt = 1;
				int num = k - 1;
				while (num>1 && arr[num--]) {
					cnt++;
				}
				num = k + 1;
				while (num<=1299710 && arr[num++]) {
					cnt++;
				}
				bw.write((cnt+1) + "\n");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
t : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜
arr : ์†Œ์ˆ˜ ํŒ๋‹จ
k : ์ •์ˆ˜

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ t๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋จผ์ € ์†Œ์ˆ˜ ํŒ๋ณ„์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์—๋ผํ† ์Šคํ…Œ์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ 1299709๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋งŒํผ ์ •์ˆ˜ k๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ •์ˆ˜ k๊ฐ€ ๋จผ์ € ์†Œ์ˆ˜์ธ์ง€ ํ•ฉ์„ฑ์ˆ˜์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค. ์†Œ์ˆ˜๋ผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค. ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด k๋ณด๋‹ค ์ž‘์€ ์ˆ˜, ํฐ ์ˆ˜๋ฅผ ๋ณด๋ฉด์„œ ํ•ฉ์„ฑ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. k๋ฅผ ํฌํ•จํ•˜๋Š” ์†Œ์ˆ˜ ์‚ฌ์ด ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.