Exploration
ํ์ (Search)
์ถ์ ๋น๋: ์ค
๋น์ถํ๊ทธ: ํ์์ ์ข ๋ฅ, ์๊ฐ ๋ณต์ก๋
ํ์์ ์ ์
- ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ์์
- ๋ด๋ถ ํ์๊ณผ ์ธ๋ถ ํ์์ผ๋ก ๊ตฌ๋ถ
- ๋ด๋ถ ํ์: ์ฃผ๊ธฐ์ต์ฅ์น ์ฌ์ฉ, ์ ์ ์์ ๋น ๋ฅด๊ฒ ํ์
- ์ธ๋ถ ํ์: ๋ณด์กฐ๊ธฐ์ต์ฅ์น ํจ๊ป ์ฌ์ฉ, ๋ง์ ์์ ๋๋ฆฌ๊ฒ ํ์
ํ์์ ์ ํ โญ
- ์ ํ ํ์: ์์ฐจ์ ์ผ๋ก ๋น๊ต
- ์ด๋ถ ํ์: ์ ๋ฐ์ฉ ๋๋ ๊ฐ๋ฉฐ ํ์
- ๋ณด๊ฐ ํ์: ์ฐพ์ ๊ฐ์ ์์น๊ฐ์ ์์ํด์ ๊ฒ์ํ๋ ์ฌ์ ์ ํ์
- ๋ธ๋ก ํ์: ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน๋ณ๋ก ๋ธ๋กํ, ์ธ๋ฑ์ฑ์ ํตํด ํ์
- ์ด์ง ํธ๋ฆฌ ํ์: ๊ฒ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ด์ง ํธ๋ฆฌ๋ก ๋ณํํ ๋ค ํ์
- ํด์ฑ ํ์: ํด์ฑ ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์
๋ณต์ก๋
๊ณต๊ฐ ๋ณต์ก๋
- ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ์ ํ์ง์ ์ํฅ์ ๋ฏธ์น๋ ๋น์ค์ด ๋ฎ์
- ๋ฉ๋ชจ๋ฆฌ ์ฉ๋๊ณผ ๊ด๋ จ๋จ
์๊ฐ ๋ณต์ก๋
- ์ฐ์ฐ์ด ์ํ๋๋ ํ์
- ํ๊ฒฝ์ ๋ฐ๋ผ ์คํ์๊ฐ์ด ๋ฌ๋ผ์ง. ํ์๊ฐ ์ ํํ ๊ธฐ์ค์ด ๋จ
- ๋ชจ๋ ์ฐ์ฐ์ด ๋ค ๋ฐ์๋์ง๋ ์์์ ์ ํํ์ง ์์ง๋ง ๋๋ต์ ์ธ ํ์ ์ฐ์ถ
- ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ถ
- ๋น ์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํจ
๋น ์ค(O) ํ๊ธฐ๋ฒ
- O(1): ์ผ์ ํ ์ํ ํ์๋ฅผ ๊ฐ์ง. ๋ฐ์ดํฐ์ ๊ฐ์์ ์๊ด์์ด ๊ณ ์ ๋ ํ์๋ก ์คํ
- O(logN): ์ ๋ ฅ ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ ์ฐ์ฐ ํ์๊ฐ ๋์ด๋๋ ํญ์ด ์ ์ ์ค์ด๋ฆ. ์ด๋ถํ์, ์ด์ง ํธ๋ฆฌ ํ์์ ์ด์ฉ
- O(N): ์ฐ์ฐํ์๊ฐ ์ผ์ ํ๊ฒ ์ฆ๊ฐ(๋น๋ก). ์์ด ๊ณ์ฐ์ด๋ ์์ฐจ ํ์์ ํ์ฉ
- O(NlogN): ์ ๋ ฅ ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ ํ์๊ฐ ๋์ด๋๋๊ฒ ์ ์ ์ปค์ง. ํต ์ ๋ ฌ, ํ ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ์ ์ฌ์ฉ
- O(Nยฒ): ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ ์ฐ์ฐ ํ์๊ฐ ๋ฐ์ดํฐ ์์ ์ ๊ณฑ๋งํผ ํ์. ๋ฒ๋ธ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ์ ์ฌ์ฉ
- O(2^N): ์ฐ์ฐ ํ์๊ฐ ๋ฐ์ดํฐ ์์ ์ง์์น๋งํผ ํ์. ํผ๋ณด๋์น ์์ด ๋ฑ์ ์ฌ๊ทํธ์ถ
- O(N!): ๊ฐ์ฅ ๋๋ฆฐ ์๊ณ ๋ฆฌ์ฆ. ์ฐ์ฐ ํ์๊ฐ ์ ๋ ฅ ๋ฐ์ดํฐ ์์ ํฉํ ๋ฆฌ์ผ
์ฃผ์ ํ์ ์๊ณ ๋ฆฌ์ฆ
์ ํ ํ์
- ์์ฐจ์ ์ผ๋ก ๋น๊ต
- ๋ฐ์ดํฐ์ ๊ฐ์๋ ์ ๋ ฌ ์ฌ๋ถ๋ฅผ ์์ง ๋ชปํด๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋จ์๋น๊ต, ๋ฐ์ดํฐ ์๊ฐ ์ ์ ๋ ํ์ฉ
- ์๊ฐ๋ณต์ก๋: O(N)
- ๋น๊ต ํ์ ํ๊ท : (N+1)/2
- ์์: 5๊ฐ์ ๋ฐ์ดํฐ ์ค 22๋ฅผ ํ์ํ๋ ๊ฒฝ์ฐ
- 22๊ฐ 1๋ฒ์งธ์ผ ๋: 1ํ ๋น๊ต
- 22๊ฐ 3๋ฒ์งธ์ผ ๋: 3ํ ๋น๊ต
- 22๊ฐ N๋ฒ์งธ์ผ ๋: Nํ ๋น๊ต
์ด๋ถ(Binary) ํ์
- ๋๋ ์ง ๋ฐ์ดํฐ ๊ทธ๋ฃน ์ค ๋์ ๋น๊ต๋ฅผ ํตํด ๋ค์ ์ ๋ฐ์ผ๋ก ๋๋
- ๋ฐ์ดํฐ ๊ฐ์ ํ์ , ๋ฐ์ดํฐ ์ ๋ ฌ ํ์
- ์ค๊ฐ์ผ๋ก ์๋ผ์ ์ค๊ฐ๊ฐ๊ณผ์ ๋์ ๋น๊ต๋ก ํ์
- ์์, ์ค๊ฐ, ๋๊ฐ ์ฌ์ฉ
- ์์ ์์น๊ฐ ๋ ์์น๋ณด๋ค ์ปค์ง๋ฉด ํ์ ์ข ๋ฃ
ํด์(Hash) ํ์
- ํด์ ํจ์๋ฅผ ์ฌ์ฉ
- ์๊ฐ๋ณต์ก๋: O(1)
- ํจ์๋ฅผ ํตํด ์ ์ฅ ์์น๊ฐ ์ถฉ๋ํ ๊ฒฝ์ฐ ์กฐ์น ํ์
์ฃผ์ ์ฉ์ด
- ํ ์ฃผ์: ํด์ ํ ์ด๋ธ ๋ด๋ถ ์ธ๋ฑ์ค
- ํค: ํด์ฑ ํจ์์ ์ ๋ ฅ๊ฐ์ด ๋๋ ๋ฐ์ดํฐ
- ๋ฒํท: ์ฌ๋กฏ๋ค์ ์งํฉ. ํ ์ฃผ์์ ์ฌ๋ฌ ๋ฒํท ์กด์ฌ ๊ฐ๋ฅ
- ์ฌ๋กฏ: ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
- ํด์ ํ ์ด๋ธ: ๋ค์์ ํ ์ฃผ์์ ๋ฒํท์ผ๋ก ๊ตฌ์ฑ๋ ๊ธฐ์ต ๊ณต๊ฐ
- ๋์์ด(Synonym): ์ถฉ๋์ด ์ผ์ด๋ ์ฌ๋กฏ์ ์งํฉ
- ์ถฉ๋(Collision): ์๋ก ๋ค๋ฅธ ์ฌ๋กฏ์ด ๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ ํ์
- ํ๋ก๋น(Probing): ์ถฉ๋ ๋ฐ์ ์ ๋ค์ ๊ณต๊ฐ์ผ๋ก ์ด๋
- ์ฒด์ธ๋ฒ(Chaining): ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ก ๊ฐ์ ํ ์ฃผ์ ๋ด์์ ์ฌ๋กฏ์ ์ด์ด์ ์ค๋ฒํ๋ก์ฐ ํด๊ฒฐ
ํด์ ํจ์์ ์ข ๋ฅ โญ
- ์ ์ฐ๋ฒ(Division): ๋๋ ๋๋จธ์ง๊ฐ์ ์ด์ฉํด ์ ์ฅ์์น ๊ฒฐ์
- ํด๋ฉ๋ฒ(Folding): ๋ถ๋ถ๋ณ ์ซ์์ ํฉ์ฐ์ฐ, XOR ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ก ์ ์ฅ ์์น ๊ฒฐ์
- ์ ๊ณฑ๋ฒ(Square): ์ ๊ณฑํ ๊ฒฐ๊ณผ์ ์ผ๋ถ๋ถ์ผ๋ก ์ ์ฅ ์์น ๊ฒฐ์
- ์ซ์ ๋ถ์๋ฒ(Digit Analysis): ์ซ์ ๋ถํฌ๊ฐ ๊ณ ๋ฅธ ๋ถ๋ถ์ ๋ถ์ํ์ฌ ์ ์ฅ์์น ๊ฒฐ์
- ๊ธฐ์ ๋ณํ๋ฒ(Radix Conversion): ํค๊ฐ์ ๋ค๋ฅธ ์ง๋ฒ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅ ์์น ๊ฒฐ์
- ๋ฌด์์๋ฒ(Random): ๋์๋ฅผ ์ด์ฉ
ํด์ ํจ์์ ์กฐ๊ฑด
- ์ถฉ๋์ ์ต์ํํ ์ ์์ด์ผ ํจ
- ๋ณต์กํ์ง ์๊ณ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ ์ ์์ด์ผ ํจ