๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5636)
< ์์ ๋ถ๋ถ ๋ฌธ์์ด >
๋ฌธ์ ํ์ด
2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ง ์์๋ผ๊ณ ํ์ผ๋ฏ๋ก ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ 100,000๊น์ง ์์ ํ๋ณ์ ํ๋ค. ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ 1์๋ฆฌ๋ถํฐ 6์๋ฆฌ๊น์ง ๊ตฌํ ์ ์๋ ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ตฌํด ๊ฐ์ฅ ํฐ ์์๋ฅผ ๊ตฌํ๋ค.
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 _5636_ { // ์์ ๋ถ๋ถ ๋ฌธ์์ด
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
boolean arr[] = new boolean[100001];
arr[0] = true;
arr[1] = true;
for (int i = 2; i < 50001; i++) {
if(!arr[i]) {
for (int j = i + i; j < 100001; j += i) {
arr[j] = true;
}
}
}
String str = "";
while (!(str = bf.readLine()).equals("0")) {
int max = 0;
for (int i = 0; i < str.length(); i++) {
for (int j = i; j < i + 6; j++) {
if (j >= str.length())
break;
int num = Integer.parseInt(str.substring(i, j + 1));
if (num > 100000) {
continue;
}
if (!arr[num]) {
max = Math.max(num, max);
}
}
}
bw.write(max + "\n");
}
bw.flush();
}
}
๋ณ์)
arr : 0~100,000 ์์ ํ๋ณ
str : ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด
max : ๊ฐ์ฅ ํฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ 0๋ถํฐ 100,000๊น์ง ์์๋ฅผ ํ๋ณํ๋ค.
0์ด ์๋ ๋๊น์ง ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ง ์์์ด๋ฏ๋ก 1์๋ฆฌ~6์๋ฆฌ์ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ตฌํ๋ค.
2) ๋ถ๋ถ ๋ฌธ์์ด์ ๊ตฌํด 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด ์์์ธ์ง ํ๋จํ๋ค. ์์๋ผ๋ฉด ๊ฐ์ฅ ํฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด์ธ์ง ํ๋จํ๋ค.
๊ฐ์ฅ ํฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1990_์์์ธํฐ๋ฆฐ๋๋กฌ (0) | 2024.03.13 |
---|---|
[Baekjoon] 1456_๊ฑฐ์ ์์ (0) | 2024.03.12 |
[Baekjoon] 3980_์ ๋ฐ ๋ช ๋จ (0) | 2024.03.08 |
[Baekjoon] 2436_๊ณต์ฝ์ (0) | 2024.03.07 |
[Baekjoon] 9417_์ต๋ GCD (0) | 2024.03.06 |