0. ์์๋ณผ ๊ฒ
1. ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋?
๊ธธ์ด๊ฐ N์ธ 1์ฐจ์ ๋ฐฐ์ด์์ ๊ธธ์ด๊ฐ W์ธ ์์ง์ด๋ ๊ตฌ๊ฐ
์ ์์ฑํ์ฌ, ํด๋น ๊ตฌ๊ฐ์ ํ ์นธ์ฉ ์์ง์ด๋ฉด์ ๊ตฌ๊ฐ ๋ด ์ ๋ณด๋ฅผ ์ถ์ถ
ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ธฐ์
(N๊ณผ W๋ ์์)
W์ธ ๊ตฌ๊ฐ์ ์์ง์ด๋ ๊ฒ์ด ๋ง์น ์ฐฝ๋ฌธ์ ๋ฐ๊ณ ๋น๊ธฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ํ์ฌ, ์์ง์ด๋ ๊ตฌ๊ฐ์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ผ๊ณ ๋ช ๋ช ํจ.
2. ํ์ฉ
(1) ๊ตฌ๊ฐํฉ
1์ฐจ์ ๋ฐฐ์ด์์ ํน์ ๊ตฌ๊ฐ ๋ด์ ํฉ์ ์ํ๋ ๋ฌธ์ ์์ ํ์ฉ.
a. ์ด๋ป๊ฒ ํ์ฉ?
๋ฐฐ์ด์ ๊ธธ์ด๊ฐ N, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ๊ธธ์ด๊ฐ W์ด๊ณ ํด๋น ์ฐฝ๋ฌธ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์์ง์ธ๋ค๋ฉด, ๋งค ์์ง์ ๋ง๋ค, ์ด์ ์์น์์์ W-1
์ ์์๋ ๋ณํ์ง ์๊ณ ๊ตฌ๊ฐ ๋ด์ ์ ์ง๋๋ค. ์๋ฅผ ๋ค์ด N = 10, W = 3์ด๋ผ ๊ฐ์ ํ๋ฉด,
๊ทธ๋ฆผ๊ณผ ๊ฐ์ด W-1์ธ 2๊ฐ์ ์์๋ ๋ณํ์ง ์์๋ค.
์ด๋ฅผ ํ์ฉํด, ๋งจ ์ฒ์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ๋ง๋ค ๋๋ง, ์์์ ํฉ์ ์ผ์ผํ ๋ํ์ฌ ๊ตฌํด๋๊ณ , ์ดํ์๋ ๊ตฌ๊ฐ์ด ์์ง์ด๋ฉด์ ๋น ์ง๋ ๊ฐ์ ๋นผ๊ณ ์ถ๊ฐ๋๋ ๊ฐ์ ๋ํ๋ฉด์, ๊ตฌ๊ฐํฉ์ ์ง์์ ์ผ๋ก ๊ตฌํ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
b. ์ ํ์ฉ?
์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์ฐ์ง ์๊ณ , ๊ธธ์ด๊ฐ N์ธ ๋ฐฐ์ด ๋ด์์ ๊ธธ์ด๊ฐ W์ธ ๋ชจ๋ ๊ตฌ๊ฐ์ ๊ตฌ๊ฐํฉ์ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด ๊ฒฝ์ฐ, 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ W-1๋ฒ ์ธ๋ฑ์ค๊น์ง ์ผ์ผํ ๊ฐ์ ์ฐพ์๋ด ๋ํ๊ณ , ๋ค์ 1๋ฒ๋ถํฐ ์์ํด W๋ฒ๊น์ง ์กฐํํ์ฌ ๊ฐ์ ๋ํ๊ณ ... ์ต์
์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ตฌํด๋ณด๋ฉด O(NW)
๊ฐ ๋์ค๊ฒ ๋๋ค. (N = ๊ตฌ๊ฐ์ ์์์ ์ฐพ๊ธฐ, W = ๊ทธ ์ดํ ๊ตฌ๊ฐ ๋ด์ ์์ ๋ชจ๋ ์กฐํ)
๋ฐ๋ฉด, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
๋ฅผ ์ฌ์ฉํ๋ฉด, ์ต์ด์ ๊ตฌ๊ฐ๋ง ์ผ์ผํ ๊ตฌํ์ฌ ์ฐพ์๋ด๊ณ , ๊ทธ ํ๋ ํ ์นธ์ฉ ์์ง์ด๋ฉด์ ์ต์ข๋จ์ ์์๋ ๋บ์
, ์ต์ฐ๋จ์ ์์๋ ๋ง์
ํด ๋๊ฐ๋ฉด ๋๋ค. ์ด๊ฒ์ ๋งค๋ฒ W๋ฒ์ ๊ณ์ฐ์ด ํ์ํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ๋ง์
ํ ๋ฒ, ๋ปฟ์
ํ ๋ฒ์ด๋ผ๋ ๊ณ ์ ๋ ๊ณ์ฐ๋ง ํ๋ฉด ๋๋ค.(O(1)) ๋ฐ๋ผ์ O(N)
์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ ๋ค.
(2) Anagram
๋ฌธ์์ด ๋ด์ ๊ธธ์ด๊ฐ W์ธ ์์์ ๊ตฌ๊ฐ์ ์ฑ ์ ํ๊ณ , ํด๋น ๊ตฌ๊ฐ ๋ด์ ์ํ๋ฒณ์ ์ฌ์ฉํด ๋ชฉํ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋์ง ๋ฌป๋ ๋ฌธ์
a. ์ด๋ป๊ฒ ํ์ฉ?
- 26๊ฐ์ ์ํ๋ฒณ์ ๋ํ ๋ฐฐ์ด์ ๋ง๋ ๋ค. (index = ๋ฌด์จ ์ํ๋ฒณ์ธ์ง ๊ฐ๋ฅดํด, value = ๊ตฌ๊ฐ ๋ด์ ํด๋น ๋ฌธ์๊ฐ ๋์จ ํ์)
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์์ง์ด๋ฉด์ ์ต์ข๋จ์ ๊ฐ์ ์ํ๋ฒณ ๋ฐฐ์ด ๋ด์์ value๋ฅผ ํ๋ ๊ฐ์, ์ต์ฐ๋จ์ ๊ฐ์ ํ๋ ์ฆ๊ฐ์ํจ๋ค.
๋ฐ์ ์๋ ๋ฐฐ์ด์ index 1 = 'a'๋ฅผ ๋ํ๋ด๊ณ , index 2 = 'b', ... index 26 = 'z'๋ฅผ ์ฐจ๋ก๋๋ก ๋ํ๋ธ๋ค.
b. ์ ํ์ฉ?
๊ตฌ๊ฐํฉ๊ณผ ๋์ผํ ์ด์ ๋ก ์๊ฐ๋ณต์ก๋ ๋ฉด์์ ํจ์จ์ ์