์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ๋๋ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ 2๊ฐ์ ์์ฐ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.ํธ์ ๋ฒ์ด๋ ๋ ์๊ฐ ์๋ก ์๋๋ฐฉ ์๋ฅผ ๋๋์ด ๊ฒฐ๊ตญ ์ํ๋ ์๋ฅผ ์ป๋๋ค๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํ๋ค.์์ฐ์ 2๊ฐ a,b์ ๋ํด์ a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ ํ๋ค๋ฉด(๋จ, a > b), a
1๋ณด๋ค ํฐ ์์ฐ์ ์ค 1๊ณผ ์๊ธฐ ์์ ๋ง์ ์ธ์๋ก ๊ฐ๋ ์์ฐ์.๋ฐ๋๋ง์ 'ํฉ์ฑ์'์ด๋ค.์์๋ฅผ ํ๋ณํ๋ ์๊ณ ๋ฆฌ์ฆ.๋น ๋ฅด๊ณ ๋๋์ผ๋ก ์์๋ฅผ ๊ตฌํ ๋ ์ ๋ฆฌํ๋ค.์ด๋ค N์ด ๋ ๊ฐ์ด์์ ๊ณฑ์ผ๋ก ๋ํ๋ผ ์ ์์ ๋, ์ธ์ ์ค ํ๋ ์ด์์ ๋ฐ๋์ โN๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ด๋ ๊ท์น์ ์ฐพ์๋ด๋ฉด, ์ฝ๊ฒ ํํํ ์ ์๋ค.๋ท์๋ฆฌ๊ฐ 0์ด ๋์ค๋ ๊ฒฝ์ฐ๋ 2์ 5๊ฐ ๊ณฑํด์ง ๋์ด๋ค.์ฆ, ์์ธ์๋ถํด ํ ๋ค 2์ 5๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ๋ท์๋ฆฌ๋ 0์ผ๋ก ๋๋๋ค๋ ์๋ฏธ์ด๋ค.์ค์ ํฉํ ๋ฆฌ์ผ ๊ฐ์ ๋์ดํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.์ด๋ฅผ ๋ณด๋ฉด, 5์ ๋ฐฐ์๋ง๋ค 0์ ์นด์ดํธ ๊ฐ์ด ์ฆ๊ฐ
0๊ณผ 1๋ก ๊ตฌ์ฑ๋ 2์ง์๋ฅผ 8์ง๋ฒ ๋ณํํ๊ธฐ ์ํด์๋ 8 = 2ยณ ์ด๊ธฐ ๋๋ฌธ์, 3์๋ฆฌ๋ง๋ค ๋์ด์ ๋ณํํด์ฃผ๋ฉด ๋๋ค.์์ ๊ณ์ฐ์ ๋ณด๋ฉด, ์ค์ํ ๊ท์น์ด ์๋ค.์ผ์ชฝ์ ์ฒซ๋ฒ์งธ๋ก ๋ณด๋ฉด 0์ธ ๊ฒฝ์ฐ 0์ผ๋ก ์ทจ๊ธํ๊ณ 1์ธ ๊ฒฝ์ฐ '4' ๋ก ์ทจ๊ธํ์ฌ ๋ํด์ค๋ค.๋๋ฒ์งธ๋ 1์ธ ๊ฒฝ์ฐ '2'๋ก
๊ตฌ๊ฐ ํฉ ์๊ณ ๋ฆฌ์ฆ ํ์ฉ์ ์ํด์๋ ํฉ ๋ฐฐ์ด์ ๊ตฌํ๋ ๊ฒ์ด ์ ํ๋์ด์ผ ํฉ๋๋ค. ๋ฐฐ์ด A๊ฐ ์์ ๋, ํฉ ๋ฐฐ์ด S๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.ํฉ๋ฐฐ์ด ์ ์Si = A0 + A1 + A2 + ... + An-1 + An์์ฒ๋ผ ํฉ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ๊ตฌํด๋์ผ๋ฉด ๊ธฐ์กด ๋ฐฐ์ด์ ์ผ์ ๋ฒ์์
"๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ" ์ ๋ฐ์ดํฐ์ ์ธ์ ์์๋ผ๋ฆฌ ๋น๊ตํ๊ณ , swap ์ฐ์ฐ์ ์ํํ๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์์ ๋๋ค.์๊ฐ ๋ณต์ก๋ : O(n^2)๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด์ ์๋๊ฐ ๋ง์ด ๋๋ฆฐ ํธ์ ๋๋ค.๋ฒ๋ธ ์ ๋ ฌ ๊ณผ์ 1\. ๋น๊ต ์ฐ์ฐ์ด ํ์ํ ๋ฃจํ ๋ฒ์๋ฅผ ์ค์ .2\. ์ธ์ ํ ๋ฐ์ดํฐ
์ ํ ์ ๋ ฌ์ ์ ๋ ฌํ ๋ฐ์ดํฐ์์ ์ต๋ ๋๋ ์ต์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋์ด๋ ์์๋ก ์ฐพ์๊ฐ๋ฉฐ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ตฌํ๋ฐฉ๋ฒ์ด ๋ณต์กํ๊ณ , ์๊ฐ ๋ณต์ก๋๋ ๋์ ๋นํจ์จ์ ์ธ ์ ๋ ฌ๋ฐฉ๋ฒ์ ๋๋ค.(๋ง์ด ์ฌ์ฉ X)์๊ฐ ๋ณต์ก๋ : O(n^2)ํต์ฌ์ด๋ก ์ ์ต์๊ฐ ๋๋ ์ต๋๊ฐ์ ์ฐพ๊ณ , ๋จ์ ์ ๋ ฌ ๋ถ๋ถ
์ฝ์ ์ ๋ ฌ์ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ๋ฒ์์ ์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ์์ผ ์ ๋ ฌํ๋ ๋ฐฉ์์ ๋๋ค. ํ๊ท ์๊ฐ ๋ณต์ก๋๋ ๋๋ฆฐ ํธ์ด์ง๋ง ์๋์ ์ผ๋ก ๊ตฌํ์ด ์ฝ์ต๋๋ค. ์๊ฐ ๋ณต์ก๋ : O(n^2) ํต์ฌ์ด๋ก ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ํ์ฌ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ๋ฒ์ ๋ด์์ ์ ์ ํ
ํต์ ๋ ฌ์ ๊ธฐ์ค๊ฐ์ ์ ์ ํ์ฌ ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ๋ ๊ฒ์ ๋ฐ๋ณตํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.๊ธฐ์ค๊ฐ์ ์ ์ ํ๋ ๊ฒ์ด ํต์ฌ์ด๋ฉฐ, ์ด์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋์ ๋ง์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.ํ๊ท ์ ์ธ ์๊ฐ ๋ณต์ก๋ : O(nlogn)ํต์ฌ ์ด๋ก ์ ๊ธฐ์ค๊ฐ์ ์ค์ฌ์ผ๋ก ๊ณ์ ๋ฐ์ดํฐ๋ฅผ 2๊ฐ
๋ณํฉ์ ๋ ฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๊ณ ๋ถํ ํ ์งํฉ์ ์ ๋ ฌํ๋ฉฐ ํฉ์น๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค.์๊ฐ ๋ณต์ก๋ : O(nlogn)ํต์ฌ์ด๋ก ์ ์ฒ์ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ ์งํฉ์ผ๋ก ๋ถํ ํฉ๋๋ค. ๊ทธ ๋ค์ ๋ณํฉํ๋ฉด์ ์ ๋ ฌ์ ํ๋ฉฐ, ๋ง์ง๋ง์๋ ํฐ ์งํฉ 2๊ฐ๋ฅผ ๋ณํฉํ์ฌ ์ ๋ ฌ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด ๋, 2๊ฐ์
์ค๋์ ๊ธฐ์ ์ ๋ ฌ์ ๋ํ ๊ฐ๋ ์ ์ตํ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๊ธฐ์ ์ ๋ ฌ์ ๊ฐ์ ๋น๊ตํ์ง ์๋ ํน์ดํ ์ ๋ ฌ์ ๋๋ค. ๊ธฐ์ ์ ๋ ฌ์ ๊ฐ์ ๋๊ณ ๋น๊ตํ ์๋ฆฟ์๋ฅผ ์ ํ ๋ค์ ํด๋น ์๋ฆฟ์๋ง ๋น๊ตํฉ๋๋ค.์๊ฐ ๋ณต์ก๋ : O(kn) - k : ๋ฐ์ดํฐ์ ์๋ฆฟ์๊ธฐ์ ์ ๋ ฌ์ ํต์ฌ์ด๋ก ์ 10๊ฐ์ ํ
์ฐธ๊ณ ํฌ์คํ ์๋ฐ\[JAVA] - ์นด์ดํ ์ ๋ ฌ์นด์ดํ ์ ๋ ฌ์ด๋ผ... ์ฌ๋ฌ ํฌ์คํ ๊ธ์ ๊ฒ์ํ์ฌ ์ฝ์ด๋ดค์ง๋ง ์ฒ์ ๋ค์ด๋ณด๋ ์ ๋ ฌ ๋ฐฉ์์ด์์ต๋๋ค.์นด์ดํ ์ ๋ ฌ์ ์๋ง์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ์๊ฐ๋ณต์ก๋๊ฐ O(n)์ผ๋ก ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค.์นด์ดํ ์ ๋ ฌ์ ๊ธฐ๋ณธ ๋ฉ์ปค๋
๊น์ด ์ฐ์ ํ์(DFS)์ ๋ํด ์ค๋ช ํ๊ธฐ ์ ๊ทธ๋ํ ๊ด๋ จ ๊ฐ๋จํ ์ฉ์ด๋ถํฐ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.'๊ทธ๋ํ' ๋ '๋ ธ๋' ์ '์์ง' ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ ๋๋ค.๋ ธ๋ : ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋จ์์์ง : ๋ ธ๋๋ฅผ ์ฐ๊ฒฐ๊น์ด ์ฐ์ ํ์์ ๊ทธ๋ํ ์์ ํ์ ๊ธฐ๋ฒ ์ค ํ๋๋ก, ๋ณดํต 'DFS' ๋ผ๊ณ
์ฐธ๊ณ ์ ํญ ์์์ ๋ ฅ์ ํฌ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๊ด๊ด๊ณ์ฃผ์ด์ง ์์ ๊ฐ์ด ๊ฐ์ฅ ํฐ ๋ํํฅ๋ง ๋จ๊ฒจ์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ.O(N) : 5N + 3, 2N + 10lgN, 10NO(N^2) : N^2 + 2N + 4, 6N^2 + 20N + 10lgNO(NlgN) :
: ๋ค์ฐจ์ ๋ฐฐ์ด์์ ๊ฐ ์นธ์ ๋ฐฉ๋ฌธํ ๋ ๋๋น๋ฅผ ์ฐ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ์๊ณ ๋ฆฌ์ฆ.์์ ๊ทธ๋ฆผ์ '๊ทธ๋ํ' ๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ์์ ํ์์ ์ํ ์๊ณ ๋ฆฌ์ฆ.DFS์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐฉ๋ฌธ๋ฐฐ์ด๊ณผ ์ธ์ ๋ฆฌ์คํธ๋ก ํํํ์ง๋ง, ์ ์ ์ ์ถ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์, Queue ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.๊ทธ
์ฐธ๊ณ ํฌ์คํ https://st-lab.tistory.com/267์ง์ญํ๋ฉด lower bound ๋ ํํ, upper bound๋ ์ํ์ ์๋ฏธํฉ๋๋ค.๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.์ฒ์์ผ๋ก ๋ง์ฃผํ๋ key ๊ฐ ์ด์์ ๊ฐ๋ ์ธ๋ฑ์ค๋ 3์ ๋๋ค.์ฆ, lower bo
์ฐธ๊ณ ํฌ์คํ https://blog.encrypted.gg/975๋งค๋ฒ ์ ํ์์ ์ง๊ธ ๊ฐ์ฅ ์ต์ ์ ๋ต์ ๊ทผ์์์ ์ผ๋ก ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.๋น์ทํ ๋ง๋ก, ๊ด์ฐฐ์ ํตํด ํ์ ๋ฒ์๋ฅผ ์ค์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํฉ๋๋ค.ํด๋น ์ ํ์ ๋ง์ ๋ฌธ์ ์ ํ์ ํ์ด๋ด์ผ ํ๋ ๊ฒ์ผ๋ก, ๋น์ทํ
์ค์ผ๋ฌ ํผ ํจ์ PN์ ์ ์๋ 1๋ถํฐ N๊น์ง ๋ฒ์์์ ์๋ก์์ธ ์์ฐ์์ ๊ฐฏ์๋ฅผ ๋ปํฉ๋๋ค. ์ค์ผ๋ฌ ํผ ํจ์๋ ์ฆ๋ช ๊ณผ์ ์ ๊ณต๋ถํด์ผ ์๋ฒฝํ๊ฒ ์ ์ ์์ง๋ง ํด๋น ๋ธ๋ก๊ทธ์์๋ ์ค์ ์ฝ๋ฉ ํ ์คํธ์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ตฌํ ๋ถ๋ถ๋ง ์์๋ณด๊ฒ ์ต๋๋ค.์ฌ๊ธฐ์ '์๋ก์' ๋,1 ์ด์ธ์ ๊ณต์ฝ์
๊ธฐ์กด์ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ๋ชฉ์ ์ ๋ ์์ ์ต๋ ๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด์์ต๋๋ค. ์ด์ ๋ค๋ฅด๊ฒ ํ์ฅ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ๋ชฉ์ ์ ๋ฐฉ์ ์์ ํด๋ฅผ ๊ตฌํ๋ ๊ฒ์ ๋๋ค.ํด๋ฅผ ๊ตฌํ๊ณ ์ ํ๋ ๋ฐฉ์ ์ax + by = c (a,b,c,x,y๋ ์ ์)์ด ๋ ์ ๋ฐฉ์ ์์ c % gcd(a,b)
ํธ๋ฆฌ(Tree) ๋ ๋ ธ๋์ ์์ง๋ก ์ฐ๊ฒฐ๋ ๊ทธ๋ํ์ ํน์ํ ํํ์ ๋๋ค.ํธ๋ฆฌ์ ํน์ง์ํ ๊ตฌ์กฐ๋ฅผ ์ง๋๊ณ ์์ง ์๊ณ , 1๊ฐ์ ๋ฃจํธ ๋ ธ๋๊ฐ ์กด์ฌ.๋ฃจํธ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ ธ๋๋ ๋จ 1๊ฐ์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฐ์.ํธ๋ฆฌ์ ๋ถ๋ถ ํธ๋ฆฌ ์ญ์ ํธ๋ฆฌ์ ํน์ง๊ณผ ๋์ผํจ.ํธ๋ฆฌ ๋ด์ ๋ ๋ค๋ฅธ ํธ๋ฆฌ๊ฐ ์ฌ๊ท์
์ด์ง ํธ๋ฆฌ(Binary Tree)๋ ๊ฐ ๋ ธ๋์ ์์ ๋ ธ์ ๊ฐฏ์๊ฐ 2 ์ดํ๋ก ๊ตฌ์ฑ๋์ด ์๋ ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.์ด์งํธ๋ฆฌ์ ์ข ๋ฅํธํฅ ์ด์ง ํธ๋ฆฌ : ๋ ธ๋๋ค์ด ํ์ชฝ์ผ๋ก ํธํฅ๋ผ ์์ฑ๋ ํํ.ํฌํ ์ด์ง ํธ๋ฆฌ : ํธ๋ฆฌ์ ๋์ด๊ฐ ๋ชจ๋ ์ผ์ ํ๋ฉฐ, ๋ฆฌํ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ์๋ ์ด์ง ํธ๋ฆฌ.์์ ์ด
DFS๋? BFS๋?!\[์ถ์ฒ : https://iq.opengenus.org/dfs-vs-bfs/ํ์ฌ ๋ ธ๋์์ ์ต๋ํ ๋ค์ด๊ฐ ์ ์๋ ๊น์ด๊น์ง ๋ค์ด๊ฐ์ ํ์ํ๋ ๋ฐฉ์.์คํ ๋๋ ์ฌ๊ทํจ์๋ก ๊ตฌํํ์ฌ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๊ฐ๊น์ด ์ธ์ ๋ ธ๋๋ถํฐ ํ์ํ๋ ๋ฐฉ์.ํ๋ก ๊ตฌํ๋
๐ฅ๏ธ ์ฐธ๊ณ ํฌ์คํ https://st-lab.tistory.com/114์ด๋ค ๋ ธ๋์ '์ ๋ง์ฑ'์ ํ๋จํ ๋ค, ํด๋น ๋ ธ๋๊ฐ ์ ๋งํ์ง ์์ ๊ฒฝ์ฐ, ๋ถ๋ชจ ๋ ธ๋๋ก ๋์๊ฐ ๋ค๋ฅธ ์์ ๋ ธ๋๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋๋ค.์ฆ, ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์๋ณด์ง๋ง, ๊ทธ ์ค์์๋ ๊ฐ๋ฅ์ฑ์ด ์๋