ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toBackend
์๋ฌธ ์ฝ๊ธฐ
Bitmasking ๋ฐ Combinatorics ๊ธฐ๋ฐ Subset Equilibrium ์ต์ ํ ๋ถ์
Perl ๐ช Weekly #771 - Exploring Perl Modules
AI ์์ฝ
Context
NP-complete ์ฑ๊ฒฉ์ ๊ฐ์ง Subset Equilibrium ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ทผ๋ฒ ํ์. ๋จ์ Iterative Search ๋ฐฉ์์ ๋นํจ์จ์ ์ธ ๋ฃจํ ๊ตฌ์กฐ์ ์ง์์ ์๊ฐ ๋ณต์ก๋๋ก ์ธํ ์ฑ๋ฅ ๋ณ๋ชฉ ๋ฐ์.
Technical Solution
- ์ ์ฒด ๋ฒ์ ํฉ๊ณผ ๋ฐฐ์ด ํฉ์ ์ฐจ์ด๋ฅผ ์ด์ฉํ O(n) ๋ณต์ก๋์ Missing Letter ํด๊ฒฐ ๊ตฌ์กฐ ์ค๊ณ
- Algorithm::Combinatorics ๋ชจ๋์ ํตํ 2~n-1 ํฌ๊ธฐ์ subset ์ ์ฉ ์์ฑ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ํ๋ณด
- 1-based Indexing ๋ณด์ ์ ์ํด @combo .elems ํฉ์ฐ ๋ฐ ํฌ์ง์ ๋ ์ดํฐ๋ ์ดํฐ ๋์
- Bit manipulation ๊ธฐ๋ฐ 1~2^n-2 ๋ฒ์ ์ ์ ๋ฐ๋ณต์ ํตํ ์ธ๋ถ ๋ชจ๋ ์์กด์ฑ ์ ๊ฑฐ ๋ฐ ์ด์์ฑ ๊ฐํ
- ์ฐจ์ด๊ฐ ๋ฆฌ์คํธ์ ์ฌ์ ๊ณ์ฐ(Precomputation)์ ํตํ ์กฐํฉ ๋ฃจํ ๋ด ์ฐ์ฐ๋ ์ต์ํ ์ ๋ต ์ ์ฉ
- Ternary expression์ ํ์ฉํ non-empty ๋ฐ empty ๊ฒฐ๊ณผ ์ผ์ด์ค์ ์ผ๊ด๋ ์ถ๋ ฅ ์ฒ๋ฆฌ
์ค์ฒ ํฌ์ธํธ
- ์ง์์ ๋ณต์ก๋ ๋ฌธ์ ํด๊ฒฐ ์ Bitmasking์ ํตํ Subset ์์ฑ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒํ - ๋ฐ๋ณต๋ฌธ ๋ด๋ถ ์ฐ์ฐ์ ์ค์ด๊ธฐ ์ํ Precomputation ๋ฆฌ์คํธ ํ์ฉ ๋ฐฉ์ ์ ์ฉ - ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์ ๊ฑฐ๋ฅผ ํตํ ์์คํ ์ด์์ฑ ๋ฐ ๋ฐฐํฌ ํจ์จ์ฑ ๊ฒ์ฆ - 0-based์ 1-based ์ธ๋ฑ์ค ํผ์ฉ ์ ๋ช ํํ ๋ณด์ ๋ก์ง(Offset) ์ ์