์์ ๊ฒ์ (Exaustive Search)
- ์์ ๊ฒ์ ๋ฐฉ๋ฒ์ ๋ฌธ์ ์ ํด๋ฒ์ผ๋ก ์๊ฐํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ดํด๋ณด๊ณ ํ์ธํ๋ ๊ธฐ๋ฒ์ด๋ค.
- Brute-force ํน์ generate-and-test ๊ธฐ๋ฒ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ ์ด๋ค.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ ์คํธ ํ ํ, ์ต์ข ํด๋ฒ์ ๋์ถํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๊ฐ ์๋์ ์ผ๋ก ์์ ๋ ์ ์ฉํ๋ค.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์์ฑํ๊ณ ํ ์คํธ ํ๊ธฐ ๋๋ฌธ์ ์ํ ์๋๋ ๋๋ฆฌ์ง๋ง, ํด๋ต์ ์ฐพ์๋ด์ง ๋ชปํ ํ๋ฅ ์ด ์๋ค.
- ์๊ฒฉ๊ฒ์ ํ๊ฐ ๋ฑ์์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํ ๋, ์ฐ์ ์์ ๊ฒ์์ผ๋ก ์ ๊ทผํ์ฌ ํด๋ต์ ๋์ถํ ํ, ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ ํด๋ต์ ํ์ธํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
ํ์ ์๊ณ ๋ฆฌ์ฆ (Greedy)
ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํด๋ฅผ ๊ตฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ทผ์์์ ์ธ ๋ฐฉ๋ฒ
์ฌ๋ฌ ๊ฒฝ์ฐ ์ค ํ๋๋ฅผ ๊ฒฐ์ ํด์ผ ํ ๋๋ง๋ค ๊ทธ ์๊ฐ์ ์ต์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ๊ฒ์ ์ ํํด ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ์ฌ ์ต์ข ์ ์ธ ํด๋ต์ ๋๋ฌํ๋ค.
๊ฐ ์ ํ์ ์์ ์์ ์ด๋ฃจ์ด์ง๋ ๊ฒฐ์ ์ ์ง์ญ์ ์ผ๋ก๋ ์ต์ ์ด์ง๋ง, ๊ทธ ์ ํ ๋ค์ ๊ณ์ ์์งํ์ฌ ์ต์ข ์ ์ธ ํด๋ต์ ๋ง๋ค์๋ค๊ณ ํ์ฌ, ๊ทธ๊ฒ์ด ์ต์ ์ด๋ผ๋ ๋ณด์ฅ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก, ๋จธ๋ฆฟ์์ ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฒ์ฆ ์์ด ๋ฐ๋ก ๊ตฌํํ๋ Greedy ์ ๊ทผ์ด ๋๋ค.
ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ๊ณผ์
- ํด ์ ํ : ํ์ฌ ์ํ์์ ๋ถ๋ถ ๋ฌธ์ ์ ์ต์ ํด๋ฅผ ๊ตฌํ ๋ค, ์ด๋ฅผ ๋ถ๋ถ ํด ์งํฉ (Solution Set)์ ์ถ๊ฐํ๋ค.
- ์คํ ๊ฐ๋ฅ์ฑ ๊ฒ์ฌ : ์๋ก์ด ๋ถ๋ถ ํด ์งํฉ์ด ์คํ ๊ฐ๋ฅ ํ์ง๋ฅผ ํ์ธํ๋ค. ๊ณง, ๋ฌธ์ ์ ์ ์ฝ ์กฐ๊ฑด์ ์๋ฐํ์ง ์๋ ์ง๋ฅผ ๊ฒ์ฌํ๋ค.
- ํด ๊ฒ์ฌ : ์๋ก์ด ๋ถ๋ถ ํด ์งํฉ์ด ๋ฌธ์ ์ ํด๊ฐ ๋๋ ์ง๋ฅผ ํ์ธํ๋ค. ์์ง ์ ์ฒด ๋ฌธ์ ์ ํด๊ฐ ์์ฑ๋์ง ์์๋ค๋ฉด 1)์ ํด ์ ํ๋ถํฐ ๋ค์ ์์ํ๋ค.
๋นํธ ์ฐ์ฐ์
๋นํธ ์ฐ์ฐ์
&
๋นํธ ๋จ์๋ก AND ์ฐ์ฐ์ ํ๋ค.
|
๋นํธ ๋จ์๋ก OR ์ฐ์ฐ์ ํ๋ค.
<<
ํผ์ฐ์ฐ์์ ๋นํธ ์ด์ ์ผ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค. ( x2 )
>>
ํผ์ฐ์ฐ์์ ๋นํธ ์ด์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค. ( /2 )
<< ์ฐ์ฐ์
1<<n
: 2n** ์ฆ ์์๊ฐ n๊ฐ์ผ ๊ฒฝ์ฐ์ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ์๋ฅผ ์๋ฏธํ๋ค.
& ์ฐ์ฐ์
i&(1<<j)
: i์ j๋ฒ์งธ ๋นํธ๊ฐ 1์ธ์ง ์๋์ง๋ฅผ ๊ฒ์ฌํ๋ค.
๊ฑฐ์ง - 0 ๋ฐํ.
๋นํธ ์ฐ์ฐ์๋ฅผ ํ์ฉํด์ ๋ถ๋ถ์งํฉ ์์ฑํ๊ธฐ
arr = [3, 6, 7, 1, 5, 4]
n = len(arr) # n : ์์์ ๊ฐ์
for i in range(1<<n):
for j in range(n):
if i & (1<<j):
print(arr[j], end=', ')
print()
print()
์ธ๋ฑ์ค
์ธ๋ฑ์ค๋ผ๋ ์ฉ์ด๋ Database์์ ์ ๋ํ์ผ๋ฉฐ, ํ ์ด๋ธ์ ๋ํ ๋์ ์๋๋ฅผ ๋์ฌ์ฃผ๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ผ์ปซ๋๋ค. Database ๋ถ์ผ๊ฐ ์๋ ๊ณณ์์๋ Look up table๋ฑ์ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋๋ฐ ํ์ํ ๋์คํฌ ๊ณต๊ฐ์ ๋ณดํต ํ ์ด๋ธ์ ์ ์ฅํ๋๋ฐ ํ์ํ ๋์คํฌ ๊ณต๊ฐ๋ณด๋ค ์๋ค. ์๋ํ๋ฉด ๋ณดํต ์ธ๋ฑ์ค๋ ํค-ํ๋๋ง ๊ฐ๊ณ ์๊ณ , ํ ์ด๋ธ์ ๋ค๋ฅธ ์ธ๋ถ ํญ๋ชฉ๋ค์ ๊ฐ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐฐ์ด์ ์ฌ์ฉํ ์ธ๋ฑ์ค
๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋งค๋ณ ์ ๋ ฌํ๋ฉด, ํ๋ก๊ทธ๋จ์ ๋ฐ์์ ๋๋ ค์ง ์ ๋ฐ์ ์๋ค. ์ด๋ฌํ ๋๋ ๋ฐ์ดํฐ์ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ณธ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์์ ์ธ๋ฑ์ค ๋ฐฐ์ด์ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
'๐ถ Programming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. Search ๊ฒ์ (0) | 2022.10.19 |
---|---|
3. Sort ์ ๋ ฌ (0) | 2022.10.02 |
2. Array ๋ฐฐ์ด (2) | 2022.10.01 |
1. Algorithm ์๊ณ ๋ฆฌ์ฆ (4) | 2022.09.29 |