Skip to content

Commit e19a750

Browse files
committed
[String] baekjoon-1305
1 parent b1e2c96 commit e19a750

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

โ€ŽREADME.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
| 01 | | [Baekjoon-14425 ๋ฌธ์ž์—ด ์ง‘ํ•ฉ](./src/String/P14425) | |
2929
| 02 | | [Baekjoon-14426 ์ ‘๋‘์‚ฌ ์ฐพ๊ธฐ](./src/String/P14426) | |
3030
| 03 | | [Baekjoon-1786 ์ฐพ๊ธฐ](./src/String/P1786) | KMP |
31+
| 04 | | [Baekjoon-1305 ๊ด‘๊ณ ](./src/String/P1305) | KMP |
3132

3233
## Data Structure
3334

โ€Žsrc/String/P1305/Main.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package String.P1305;
2+
3+
import java.io.*;
4+
5+
public class Main {
6+
public static void main(String[] args) throws Exception {
7+
System.setIn(new FileInputStream("src/String/P1305/input.txt"));
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
10+
int L = Integer.parseInt(br.readLine());
11+
String s = br.readLine();
12+
13+
int[] pattern = makePk(s);
14+
System.out.println(L - pattern[s.length()-1]);
15+
}
16+
17+
private static int[] makePk(String s) {
18+
int[] Pk = new int[s.length()];
19+
int k = 0;
20+
for (int i = 1; i < s.length(); i++) {
21+
while (k > 0 && s.charAt(i) != s.charAt(k))
22+
k = Pk[k-1];
23+
if (s.charAt(i) == s.charAt(k))
24+
Pk[i] = ++k;
25+
}
26+
return Pk;
27+
}
28+
}

โ€Žsrc/String/P1305/README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
## [baekjoon-1305] ๊ด‘๊ณ 
2+
3+
![image](https://user-images.githubusercontent.com/22045163/103282462-317f5b80-4a19-11eb-8d44-e6234669a85e.png)
4+
5+
### ํ’€์ด ๊ณผ์ •
6+
7+
๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ๋ฅผ, ์•ž์„œ ํ’€์—ˆ๋˜ [๋ฌธ์ž์—ด ๊ฒ€์ƒ‰](../P1786) ๋ฌธ์ œ์—์„œ๋Š”
8+
์ฐพ์œผ๋ ค๋Š” ๋ฌธ์ž์—ด ํŒจํ„ด์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ํŒจํ„ด์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์œผ๋ ค๋Š”๊ฒŒ ๊ณผ์ œ์˜€๋‹ค.
9+
ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๋ฌธ์ œ์—์„œ๋Š” ๋ฐ˜๋Œ€๋กœ **ํŠน์ • ํŒจํ„ด์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์—์„œ ํŒจํ„ด์„ ์ฐพ๋Š” ๊ฒƒ์ด ๊ณผ์ œ**์˜€๋‹ค.
10+
11+
์‹œ๊ฐ„ ํšจ์œจ์„ ์ƒ๊ฐํ•ด๋ณด์•˜์„ ๋•Œ, `L`์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ 100๋งŒ์ด๋ฏ€๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„
12+
๋‹จ ํ•œ ๋ฒˆ๋งŒ `for๋ฌธ`์œผ๋กœ ํ›‘์–ด์„œ ๋‹ต์„ ๋„์ถœํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋žฌ์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒ๊ฐ์ด ์ด์–ด์กŒ๋‹ค.
13+
14+
![image](https://user-images.githubusercontent.com/22045163/103283797-dc454900-4a1c-11eb-98b5-4869db32bf2d.png)
15+
16+
์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ `ํ˜„์žฌ ๊ฒ€์‚ฌํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด ๊ธธ์ด`์—์„œ `์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ๊ฐ™์€ ๊ตฌ๊ฐ„์˜ ๊ธธ์ด`๋ฅผ
17+
๋นผ์ฃผ๋ฉด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด ํŒจํ„ด ๋ฐ ๊ทธ ํŒจํ„ด์˜ ๊ธธ์ด๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
18+
19+
์ด ๋•Œ, ํŒจํ„ด์ด 3๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ๋Š”?
20+
21+
![image](https://user-images.githubusercontent.com/22045163/103283950-3e9e4980-4a1d-11eb-930a-23423f59290c.png)
22+
23+
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ„์™€ ๊ฐ™์ด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
24+
25+
**KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜**์—์„œ `makePk` ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์—์„œ ์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋Š”
26+
์ตœ๋Œ€์˜ ๊ธธ์ด๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋„์ถœ๋˜๋Š” ๊ฐ’์„ ์ด์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

โ€Žsrc/String/P1305/input.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
5
2+
aaaaa
3+
output 1
4+
5+
11
6+
aabaaabaaab
7+
output 4
8+
9+
6
10+
aabaaa
11+
output 4

0 commit comments

Comments
ย (0)