|
| 1 | +## [baekjoon-1786] ์ฐพ๊ธฐ |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | +### KMP ๋ฌธ์์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ |
| 7 | + |
| 8 | +> [KMP : ๋ฌธ์์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ](https://bowbowbow.tistory.com/6) |
| 9 | +
|
| 10 | +์ ๋งํฌ์ ๋งค์ฐ ์ ์ค๋ช
๋์ด ์๋ค. ์ค์ค๋ก ๋ช ๋ฒ ๋ ๊ตฌํํด๋ณด๋ฉด์ ์ฐ์ตํด์ผ ํ ๊ฒ ๊ฐ๋ค. |
| 11 | + |
| 12 | +### ์๊ฐ ์ด๊ณผ ์ด์ - makePk ํจ์ |
| 13 | + |
| 14 | +```java |
| 15 | +static int[] makePk(String P) { |
| 16 | + int[] Pk = new int[P.length()]; |
| 17 | + for (int i = 1; i < P.length(); i++) { |
| 18 | + int k = (i+1) / 2; |
| 19 | + while (k > 0 && !P.substring(0, k).equals(P.substring(i+1 - k, i+1))) |
| 20 | + k--; |
| 21 | + Pk[i] = k; |
| 22 | + } |
| 23 | + return Pk; |
| 24 | +} |
| 25 | +``` |
| 26 | + |
| 27 | +์ฒ์์๋ ์ด๋ ๊ฒ ์งฐ์๋ค. `substring`์ ํตํด ์ผ์ผ์ด ๋น๊ตํ๋ ๊ฒ์ด๋ค. |
| 28 | +์ง๋ฉด์๋ ์๊ฐ ๊ฑฑ์ ์ ๋ง์ด ํ์๋๋ฐ, ์ญ์ ์๊ฐ ์ด๊ณผ ์ด์๊ฐ ๋ฌ๋ค. |
| 29 | +์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ ์ด ํจ์๋ kmp ์๊ณ ๋ฆฌ์ฆ ์๋ฆฌ๋ฅผ ์ด์ฉํด์ผ ํ๋ ๊ฒ์ด์๋ค. |
| 30 | +๊ทธ๋ฌ์ ๋ O(`P์ ๊ธธ์ด`)๋ก ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ค. |
| 31 | + |
| 32 | +### ๋ฉ๋ชจ๋ฆฌ์ ์๊ฐ ์ค์ด๊ธฐ |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +์ฒ์์๋ ArrayList์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค. |
| 37 | +ํ์ง๋ง ๊ทธ๋ฌ์ ๋ ์คํ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋๋ฌด ๋ง์ด ํ์ํ๋ค๋ ๊ฒ์ ํ์ธํ๊ณ ๋ค๋ฅธ ์ฝ๋๋ค์ ์ฐธ๊ณ ํด๋ณด์๋ค. |
| 38 | +ArrayList ๋์ , StringBuilder์ ๊ฐ์ ์ ์ฅํ์ฌ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ |
| 39 | +๋ฉ๋ชจ๋ฆฌ์ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์๋ค. |
| 40 | + |
| 41 | +ArrayList๋ ๋๋์ ์๋ฃ๋ฅผ ์ถ๊ฐํ ์ ๋ณต์ฌ๊ฐ ์ผ์ด๋๊ฒ ๋์ด ์ฑ๋ฅ ์ ํ๋ฅผ ์ผ์ผํจ๋ค๊ณ ํ๋ค. |
| 42 | + |
| 43 | +> Java.util.ArrayList ์์ add()๋ ensureCapicity() ๋ฅผ ํธ์ถํ์์ ๋ |
| 44 | +> ๋ง์ฝ ์ง๊ธ ํ ๋น๋ ์์ญ์ด ์๋ค๋ฉด, `(ํ์ฌํฌ๊ธฐ*3/2+1)`๋งํผ์ผ๋ก ์๋ก ์์ญ์ ํ ๋นํ๊ณ ์ ์ฒด ๋ณต์ฌ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค. |
| 45 | +> Size๊ฐ ์ปค์ง๋ฉด Arrays.copyOf() ๋ด๋ถ์์ ๋ณต์ฌํ ๋ถ๋ถ์ด ์ปค์ง๋๋ค. |
| 46 | +> ๋ค๋ฅด๊ฒ ๋งํ๋ฉด ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ฌ์ด์ฆ ์ฆ๊ฐ์ ๋ถ๋ด์ด ๋๋ค๋ ๋ง์ด์ง์. |
| 47 | +> |
| 48 | +> ์ถ์ฒ : [Java ArrayList, Vector, LinkedList ์๋ฃํ ๋น๊ต (์๊ฐ ๋ณต์ก๋ ์ค์ฌ์ผ๋ก...) - ์ถ, ๊ธ์ต, IT, ์ก๋์ฌ๋](https://pickykang.tistory.com/6) |
0 commit comments