๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1418)
< K-์ธ์ค์ >
๋ฌธ์ ํ์ด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ํ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์์๋ฅผ ํ๋ณํด ๋๋ค. n์ดํ์ ๊ฐ์ ๊ฐ๊ฐ ์์ธ์๋ฅผ ๊ตฌํ ํ ์ต๋ ์์ธ์ ๊ฐ์ด k๋ณด๋ค ์์์ง ํ๋จํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _1418_ { // K-์ธ์ค์
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int k = Integer.parseInt(bf.readLine());
boolean arr[] = new boolean[100001];
for (int i = 2; i <= 50001; i++) {
if (!arr[i]) {
for (int j = i + i; j < 100001; j += i) {
arr[j] = true;
}
}
}
int cnt = 1;
for (int i = 2; i <= n; i++) {
if (arr[i]) {
int temp = 2;
int num = i;
int max = -1;
while (true) {
if (num % temp == 0) {
num /= temp;
max = Math.max(max, temp);
} else {
temp++;
}
if (temp > num || !arr[num]) {
max = Math.max(max, num);
break;
}
}
if (max <= k) {
cnt += 1;
}
} else {
if (i <= k) {
cnt += 1;
}
}
}
System.out.println(cnt);
}
}
๋ณ์)
n, k : ์์ฐ์, ์ต๋๊ฐ
arr : ์์ ํ๋ณ
cnt : k-์ธ์ค์ ๊ฐ์
temp, num, max : ๋๋๋ ์, ํ์ฌ ๊ฐ, ์์ธ์ ์ต๋๊ฐ
n๊ณผ k๊ฐ์ ์ ๋ ฅ๋ฐ๋๋ค. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ 100000๊น์ง ์์๋ฅผ ํ๋ณํ๋ค. 1์ ์ ๋ต์ ํฌํจํด์ผ ํ๋ฏ๋ก cnt๋ฅผ 1๋ก ์ด๊ธฐํํ๋ค. 2๋ถํฐ n์ดํ๊ฐ๊น์ง ์ํํ๋ฉฐ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ๊ฐ์ด ์์๊ฐ ์๋๋ผ๋ฉด
1-1) temp๋ก ๋๋ ์ค๋ค. temp๋ก ๋๋ ์ง๋ค๋ฉด temp๊ฐ ์์ธ์ ์ด๋ฏ๋ก ๊ฐ์ ๋๋๊ณ ์์ธ์ ์ค์์ ์ต๋๊ฐ์ ์ ๋ฐ์ดํธํ๋ค. ๋๋ ์ง์ง ์๋๋ค๋ฉด temp๊ฐ์ ์ฆ๊ฐ์ํจ๋ค. ๋ง์ฝ temp๊ฐ ํ์ฌ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ํ์ฌ ๊ฐ์ด ์์๋ผ๋ฉด ๋ ์ด์ ๊ณ์ฐํ ํ์ ์์ผ๋ฏ๋ก ์์ธ์ ์ค์์ ์ต๋๊ฐ์ ์ ๋ฐ์ดํธํ ํ ์ข ๋ฃํ๋ค. ์์ธ์ ์ค์์ ์ต๋๊ฐ์ด k์ดํ๋ผ๋ฉด cnt๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
2) ๊ฐ์ด ์์๋ผ๋ฉด
2-1) ํ์ฌ ๊ฐ์ด k์ดํ๋ผ๋ฉด cnt๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
์ต์ข cnt๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 7490_0 ๋ง๋ค๊ธฐ (0) | 2024.04.30 |
---|---|
[Baekjoon] 18290_NM๊ณผ K (1) (0) | 2024.04.29 |
[Baekjoon] 24039_2021์ ๋ฌด์์ด ํน๋ณํ ๊น? (1) | 2024.04.25 |
[Baekjoon] 6588_๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2024.04.24 |
[Baekjoon] 17103_๊ณจ๋๋ฐํ ํํฐ์ (0) | 2024.04.23 |