๋ฌธ์ (์ถ์ฒ: 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๋ฅผ ํฌํจํ๋ ์์ ์ฌ์ด ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16206_๋กค์ผ์ดํฌ (0) | 2024.02.29 |
---|---|
[Baekjoon] 9421_์์์๊ทผ์ (1) | 2024.02.28 |
[Baekjoon] 1124_์ธ๋ํ๋ผ์ (1) | 2024.02.26 |
[Baekjoon] 2232_์ง๋ขฐ (0) | 2024.02.23 |
[Baekjoon] 3005_ํฌ๋ก์ค์๋ ํผ์ฆ ์ณ๋ค๋ณด๊ธฐ (0) | 2024.02.22 |