File tree Expand file tree Collapse file tree 4 files changed +66
-0
lines changed Expand file tree Collapse file tree 4 files changed +66
-0
lines changed Original file line number Diff line number Diff line change 28
28
| 01 | | [ Baekjoon-14425 ๋ฌธ์์ด ์งํฉ] ( ./src/String/P14425 ) | |
29
29
| 02 | | [ Baekjoon-14426 ์ ๋์ฌ ์ฐพ๊ธฐ] ( ./src/String/P14426 ) | |
30
30
| 03 | | [ Baekjoon-1786 ์ฐพ๊ธฐ] ( ./src/String/P1786 ) | KMP |
31
+ | 04 | | [ Baekjoon-1305 ๊ด๊ณ ] ( ./src/String/P1305 ) | KMP |
31
32
32
33
## Data Structure
33
34
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ ์ต๋์ ๊ธธ์ด๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ์ด ํจ์๋ฅผ ํตํด ๋์ถ๋๋ ๊ฐ์ ์ด์ฉํ๋ฉด ์ํ๋ ๋ต์ ์ฐพ์ ์ ์๋ค.
Original file line number Diff line number Diff line change
1
+ 5
2
+ aaaaa
3
+ output 1
4
+
5
+ 11
6
+ aabaaabaaab
7
+ output 4
8
+
9
+ 6
10
+ aabaaa
11
+ output 4
You canโt perform that action at this time.
0 commit comments