์๊ฒ ๋ชจ๋ฅด๊ฒ ์ ๋ง ์ถ์ํ๋ ๊ฐ๋ ฅํ ํ์ ๋ถ์ฌํ๋ค. ํนํ ์ปดํจํฐ์ ๊ฒฝ์ฐ low level์์๋ ํธ๋์ง์คํฐ๊ฐ ์๋ํ๊ณ ์๋ค๋ ์ฌ์ค์ ์์์ฑ๊ธฐ ์ ๋ง ์ด๋ ต๋ค. ๊ทธ๋ฆฌ๊ณ low level์ ๋ค ์ฑ๊ธฐ๊ธฐ์ ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ๊ฐ๋ฐํ๊ธฐ์ ์๊ฐ๋ ๋ง์ด ์์๋๊ณ ..
๋๋ javascript
์ ๊ฐ์ด ํจ์จ์ ์ผ๋ก ๊ตฌํํ๋ high level์ ๊ฐ๋ฐ์ ์ ํธํ๋ ํธ์ด์ง๋ง, low level๊น์ง ์์ง ๋ชปํ๋ค๋ฉด ๊ฐ๋์ฉ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ ๋ ์ฝ๊ฒ ๋์น์ฑ๊ธฐ ์ด๋ ต๋ค.
์ค๋ ์ ์ง๋ฅธ ์ค์ ํ๊ฐ์ง๋ฅผ ๊ณต์ ํด๋ณธ๋ค.
for (unsigned int i = 0; i <= 0xFFFFFFFFU; ++i) {validation(i);}
์ ๋ก์ง์ ์์ฑ์๊ฐ ์๋ํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด 0
์์ 0xFFFFFFFFU
๊น์ง ๋ฃจํ๋ฅผ ๋๊ณ ์ข
๋ฃ๋ ๊ฒ์ด๋ค. ๊ณผ์ฐ ๊ทธ๋ด๊น?
๋ฌธ์ ๊ฐ ๋๋ ์ง์ ์ 0xFFFFFFFFU
๋ค์์ ์ซ์์ด๋ค. 0xFFFFFFFFU
๋ค์์ ์ซ์๊ฐ ๋ฌด์์ผ๊น? ์ฌ๊ธฐ์ ์์ฐจ ์ถ์๋ค. ๋๋ ๋ชจ๋ฅด๊ฒ for
๋ฌธ์ ์ถ์ํ ํด์ ์๊ฐํ๊ณ ์์๋ ๊ฒ. ์ฌ์ค ์ ๋ก์ง์ i
๋ผ๋ ๋ณ์๋ฅผ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ ํ๋ฉด์ ๋น๊ต๋ฅผ ํ๊ณ ์์ ๋ฐ๋ฆ์ด๋ค.
overflow
๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ 0xFFFFFFFFU + 1U = 0
์ด๋ค. ์ฆ, ์ ๋ฃจํ๋ ์ผํ ๋ณด๋ฉด ์ฝ 42์ต๋ฒ ๋์ํ ๊ฒ ๊ฐ์ง๋ง, ๋ฌดํ๋ฃจํ์ ๋น ์ง๋ค. ์ ์๋๋ง ๊ณจ๋จธ๋ฆฌ ์ฉํ๋ ๋ฌธ์ ๊ณ , ์๊ณ ๋๋ฉด ๋ณ ๋ฌธ์ ์๋๋ฐ, ์๊ณ ๋๋ฉด ๊น์๋ค. ์ด๋ฐ ์ผ ์๋๋ก low level์ ๊ณต๋ถ๋ฅผ ๊ฒ์๋ฆฌ ํด์๋ ์๋ ๊ฑฐ ๊ฐ๋ค.
์์ ์๊ณ ๋ฆฌ์ฆ์ ํผ๋ค๊ณ ํด์ ์๋์ ์ผ๋ก ๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ๊ฒ์ ์๋๋ค. ์ต๊ทผ์๋ MST
๋ผ๋ ๊ฒ์ ๊ฐ๋
์ ์ฒ์ ์ ํ๊ณ (์ด๋ฆ์ ๋ค์ด๋ดค๋ค ํ์์ง๋ผ๋), ๊ทธ๋ํ์์์ cycle
์ ์ด๋ป๊ฒ ์ฝ๊ฒ ํ์ ํ๋์ง๋ ์๊ฒ ๋๋ค. Union Find
์ ์ฒซ ํ์ฉ ์๋ฅผ ์๊ฒ ๋๋ค๊ณ ํด์ผํ๋.. ๊ฐ๋ฐ์ ์ข์ํ๊ธฐ ๋๋ฌธ์ ๊ตฌํ ๋ฌธ์ ์ ๊ฐํ ๋๋์ธ๋ฐ ์ด๊ฒ ๋ง๊ณ ๋ ๋ค ์ํด์ผ ํ๋ค. ๊ทธ๊ฒ์ด ํ๋ก๋๊น.. (์ค๊ธ์ค๊ธ)