๐ก๋ฐฐ๋ญ ๋ฌธ์
- n๊ฐ์ ๋ฌผ๊ฑด์ด ์๊ณ , ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ์ ๊ฐ์น๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฐฐ๋ญ์ด ํ์ ๋ ๋ฌด๊ฒ์ ๋ฌผ๊ฑด๋ค์ ๋ด์ ์ ์์ ๋, ์ต๋์ ๊ฐ์น๋ฅผ ๊ฐ๋๋ก ๋ฐฐ๋ญ์ ๋ฃ์ ๋ฌผ๊ฑด๋ค์ ์ ํ๋ ๋ฌธ์
๐ก๋ถ๋ถ ๋ฐฐ๋ญ ๋ฌธ์
- ๋ฌผ๊ฑด์ ๋ถ๋ถ์ ์ผ๋ก (์ชผ๊ฐ์) ๋ด๋ ๊ฒ์ ํ์ฉ
- ์ต์ ํด๋ฅผ ์ํด์ '์์ฌ๋ด์ด' ๋จ์ ๋ฌด๊ฒ ๋น ๊ฐ์ฅ ๊ฐ๋๊ฐ๋ ๋ฌผ๊ฑด์ ๋ฐฐ๋ญ์ ๋ฃ๊ณ , ๊ณ์ํด์ ๊ทธ ๋ค์์ผ๋ก ๊ฐ๋๊ฐ๋ ๋ฌผ๊ฑด์ ๋ฃ๋๋ค.
- ๋ง์ฝ, ๊ทธ ๋ค์์ผ๋ก ๊ฐ๋๊ฐ๋ ๋ฌผ๊ฑด์ 'ํต์งธ๋ก' ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๊ฒ๋๋ฉด, ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์์ ๋งํผ๋ง ๋ฌผ๊ฑด์ ๋ถ๋ถ์ ์ผ๋ก ๋ฐฐ๋ญ์ ๋ด๋๋ค.
๐ก์์ฌ์ฝ๋
- ์ ๋ ฅ : n๊ฐ์ ๋ฌผ๊ฑด ๋ฐ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ, ๊ฐ์น, ๋ฐฐ๋ญ์ ์ฉ๋ C
- ์ถ๋ ฅ : ๋ฐฐ๋ญ์ ๋ด์ ๋ฌผ๊ฑด ๋ฆฌ์คํธ L, ๋ฐฐ๋ญ์ ๋ด์ ๋ฌผ๊ฑด์ ๊ฐ์น ํฉ v
-
1. ๊ฐ ๋ฌผ๊ฑด์ ๋ํด ๋จ์ ๋ฌด๊ฒ๋น ๊ฐ์น๋ฅผ ๊ณ์ฐ 2. ๋ฌผ๊ฑด๋ค์ ๋จ์ ๋ฌด๊ฒ ๋น ๊ฐ์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ , ์ ๋ ฌ๋ ๋ฌผ๊ฑด ๋ฆฌ์คํธ๋ฅผ S 3. L = ∅, w = 0, v = 0 ( w = ๋ฐฐ๋ญ์ ๋ด๊ธด ๋ฌผ๊ฑด๋ค์ ๋ฌด๊ฒ์ ํฉ ) 4. S์์ ๋จ์๋ฌด๊ฒ๋น ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๋ฌผ๊ฑด x๋ฅผ ๊ฐ์ ธ์จ๋ค. // ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ํต์งธ๋ก ๋ด๊ธฐ (๋ฌผ๊ฑด์ ํต์งธ๋ก ๋ด์ ์ ์๊ฒ ๋๋ฉด ๋ฃจํ๋ฅผ ์ข ๋ฃ) 5. whild(w+x<=C) { 6. x๋ฅผ L์ ์ถ๊ฐ์ํจ๋ค. 7. w = w+x์ ๋ฌด๊ฒ 8. v = v+x์ ๊ฐ์น 9. x๋ฅผ S์์ ์ ๊ฑฐํ๋ค. 10. S์์ ๋จ์ ๋ฌด๊ฒ ๋น ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๋ฌผ๊ฑด x๋ฅผ ๊ฐ์ ธ์ด. } // ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ๋ถ๋ถ์ ์ผ๋ก ๋ด๊ธฐ 11. if((C-w)>0){ //๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ๋ถ๋ถ์ ์ผ๋ก ๋ด์ ์ฌ์ ๊ฐ ์๋ ์ง ํ์ธ ( ํ์ฌ๊น์ง ๋ฐฐ๋ญ์ ๋ด์ ๋ฌผ๊ฑด๋ค์ ๋ฌด๊ฒ w๊ฐ ๋ฐฐ๋ญ์ ์ฉ๋ C๋ณด๋ค ์์ผ๋ฉด, ) 12. ๋ฌผ๊ฑด x๋ฅผ (C-w)๋งํผ๋ง ๋ฌผ๊ฑด ๋ฆฌ์คํธ L์ ์ถ๊ฐํ๋ค. 13. v = v + (C-w)๋งํผ์ x์ ๊ฐ์น } 14. return L,v
โฐ์์ ๋ฌธ์
๐ก์๊ฐ๋ณต์ก๋
- Line 1 : n๊ฐ์ ๋ฌผ๊ฑด ๊ฐ๊ฐ์ ๋จ์ ๋ฌด๊ฒ๋น ๊ฐ์น๋ฅผ ๊ณ์ฐ : O(n)
- Line 2 : ๋ฌผ๊ฑด์ ๋จ์ ๋ฌด๊ฒ ๋น ๊ฐ์น์ ๋ํด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํ O(nlogn)
- Line 5~10 : while ๋ฃจํ๋ n๋ฒ์ ๋์ง ์์ - ๋ฃจํ๋ด๋ถ์ ์ํ์ O(1)์๊ฐ
- line 11~14 : ๊ฐ๊ฐ O(1) ์๊ฐ
- O(n) + O(nlogn) + n x O(1) + O(1) = O(nlogn) (Sorting์ด ๊ฐ์ฅ ํฐ ์ํฅ)
โฐ์์ฉ
- 0-1 ๋ฐฐ๋ญ ๋ฌธ์ ๋ ์ต์์ ๋น์ฉ์ผ๋ก ์์์ ํ ๋นํ๋ ๋ฌธ์ ๋ก, ์กฐํฉ๋ก , ๊ณ์ฐ์ด๋ก , ์ํธํ, ์์ฉ์ํ ๋ถ์ผ์ ๊ธฐ๋ณธ๋ฌธ์
- ์์ฉ์ฌ๋ก : '๋ฒ๋ฆฌ๋ ๋ถ๋ถ ์ต์ํ์ํค๋' ์์์ฌ ์๋ฅด๊ธฐ
- ์์ฐ ํฌ์ ๋ฐ ๊ธ์ต ํฌํธํด๋ฆฌ์ค์์์ ์ต์ ์ ์ ํ
- Merdle - Hellman ๋ฐฐ๋ญ ์ํธ ์์คํ ์ ํค ์์ฑ
Reference
์์ธ๊ณผํ๊ธฐ์ ๋ํ๊ต ์ปดํจํฐ๊ณตํ๊ณผ ์๊ณ ๋ฆฌ์ฆ ์์
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ์์ ์ค์ผ์ค๋ง (0) | 2021.10.13 |
---|---|
[Algorithm] ์งํฉ ์ปค๋ฒ ๋ฌธ์ (Set Covering Problem) (0) | 2021.10.13 |
[Algorithm] ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ : ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (0) | 2021.10.11 |
[Algorithm] ์ต์ ์ ์ฅ ํธ๋ฆฌ : ํฌ๋ฃจ์ค์ปฌ & ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (0) | 2021.10.11 |
[Algorithm] ์ต๊ทผ์ ์ ์ ์ ์๊ณ ๋ฆฌ์ฆ (Closest Pair) (0) | 2021.10.06 |