์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
์๊ณ ๋ฆฌ์ฆ์ ํ๋ฉด์ ๊ธฐ์ตํด๋๋ฉด ์ข์๋งํ ์ฝ๋๋ฅผ ๊ธฐ๋กํ๋ค. ๐บ ์ํฉ ์ค๋ช
๊ณ ์์ด๊ฐ ์ํ์ข์ฐ๋ก L๋งํผ ์ด๋ํ ๋ ๋ฒ์ ๋ฐ์ผ๋ก ์ด๋ํ๋ค๋ฉด ์ด๋๋ฐฉํฅ์ ๋ฐ๋๋ก ๋ฐ๊พผ ํ ์ด๋์ ๊ณ์ ์งํํ๋ค. ๋ง์ฝ L์ ๊ฐ์ด 10์ต์ผ ๋ for๋ฌธ์ 10์ต ๋ฒ ๋๋ ค ๊ณ ์์ด๊ฐ ์ด๋ํ๊ฒ ๋๋ ์์น๋ฅผ ์ ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ฉฐ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๊ณ ์์ด์ ์์น๋ฅผ ๋ฐ๋ณต๋ฌธ์ด ์๋ ์์ ์ด์ฉํด์ ๊ตฌํด๋ณด์. ๐น๏ธ ๊ตฌํ ๋ฐฉ๋ฒ ๐น ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ๋ 4x6์ ํ์์ ํ์ฌ ๊ณ ์์ด๋ (2, 2)์ ์์นํด ์๋ค. ๊ณ ์์ด๊ฐ ๋ง์ฝ 3์นธ ์ด๋ํ๋ฉด ๋ฒ์์ ๋ฒ์ด๋์ง ์๋๋ค. ํ์ง๋ง ์ค๋ฅธ์ชฝ์ผ๋ก 7์นธ ์ด๋ํ ๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค. ๋ค์ ์ด๋ํ๋ ค๋ ์นธ์ด ๋ฒ์์ ๋ฒ์ด๋๋ค๋ฉด ๋ฐฉํฅ์ ๋ฐ๋๋ก ๋ฐ๊ฟ ์ด๋ํ๊ณ , ์ต์ข
์ ์ผ๋ก (2, 1)์ ์์นํ๊ฒ ๋๋ค. 12์นธ ์ด๋ํ๋ฉด ๋์ผํ..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
๋ฌํฝ์ด ์ด๋์ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ฝ๋๊ฐ ์์ด์ ๊ธฐ๋กํ๋ค. ์ฐ์ ๊ฒฉ์์ ํ ๋ณ์ ๋ฌด์กฐ๊ฑด ํ์๋ค. ์ -> ๋ฐ์ผ๋ก ์ด๋ํ๋ ๋ฐฉํฅ๊ณผ ๋ฐ -> ์์ผ๋ก ์ด๋ํ๋ ๋ฐฉํฅ์ ํ ๋ฒ์ ์ ์ฅํ๋ ๋ก์ง์ด๋ค. ๊ท์น ์ฐพ๊ธฐ ๋ฌํฝ์ด ์ด๋ํ๋ ๊ท์น์ ์ฐพ์๋ณด๋ฉด ํ์ฌ ๋ฐฉํฅ์ด ๋ง์ฝ ์ ๋๋ ์๋์ผ ๋๋ง๋ค ์ด๋ํ๋ ํ์๊ฐ 1์ฉ ์ฆ๊ฐํ๋ค. ์ โ ๋ฐ์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด, โฌ๏ธ โก๏ธ ๋ก ์ด๋ํ ๋๋ 1, 3, 5 ... ์นธ์ฉ ์ด๋ํ๊ณ , โฌ๏ธ โฌ
๏ธ ๋ก ์ด๋ํ ๋๋ 2, 4, 6 ... ์นธ์ฉ ์ด๋ํ๋ค. (0, 0)์นธ์ผ๋ก ํฅํด ๊ฐ๋ ๋ง์ง๋ง โฌ๏ธ๋ ์ง์ ์นธ๋งํผ ์ด๋ํ์ง๋ง ์ด์ฐจํผ (0, 0)์์ ๋๋๊ธฐ ๋๋ฌธ์ breakํ๋ฉด ๋๋ค. ๋ฐ โ ์์ผ๋ก ์ด๋ํ๋ ๋ฌํฝ์ด ๋ชจ์์ ์์ ๋ฐ๋๋ก ์๊ฐํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฉํฅ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ์ฝ๋ public st..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
์ฝํ
๋ณด๋ค๊ฐ ๋์จ ๊ฒ์ด๊ธฐ์ ์ ๋ฆฌํ๋ค... LCS (Longest Common Subsequence)๋ ์ฃผ์ด์ง ์ฌ๋ฌ ๊ฐ์ ์์ด ์ค์์ ๋ชจ๋์ ๋ถ๋ถ์์ด์ด ๋๋ ์์ด๋ค ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ ์ฐพ๋ ๊ฒ์ด๋ค. ์์๋ฅผ ๋ณด์๋ฉด, ACAYKP์ ๋ถ๋ถ์์ด์ {A}, {C}, {A}, {Y}, {K}, {P}, {A, C}, {A, A}, {A, Y}, ... {A, C, A, Y, K, P} ์ด๊ณ , CAPCAK์ ๋ถ๋ถ์์ด์ {C}, {A}, {P}, {C}, {A}, {K}, {C, A}, {C, P}, {C, C}, ... {C, A, P, C, A, K}์ด ์๋๋ฐ ๊ฐ๊ฐ์ ๋ถ๋ถ์์ด ์ค์์ ์๋ก ๊ฐ์ ๋ถ๋ถ์์ด์ด ์์ ๊ฒ์ด๋ค. ๊ทธ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ ์ฐพ์ผ๋ฉด ๋๋๋ฐ ์์ ์์์ ๋ต์ ๊ธธ์ด๊ฐ 4์ธ {A, C, A, K} ์ด๋ค. ๋ํ์ ..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
์์๊ฐ ์ ํด์ ธ์๋ ์์
์ ์ฐจ๋ก๋ก ์ํํด์ผํ ๋ ๊ทธ ์์๋ฅผ ๊ฒฐ์ ํด์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์๋ฅผ ๋ค์ด๋ณด๋ฉด, ์์ ๊ฐ์ ์ปค๋ฆฌํ๋ผ์์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํ๊ณ ์ ํ๋ฉด ์ ์๊ณผ๋ชฉ๋ค์ ์๊ฐํ ํ์ ๋ค์ด์ผํ๋ค๊ณ ํ์ ๋, ์ด์ฐ์ํ โ Cํ๋ก๊ทธ๋๋ฐ โ ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ โ ์๋ฃ๊ตฌ์กฐ โ ์๊ณ ๋ฆฌ์ฆ ์์๋ก ์๊ฐ์ ์ฒญ์ ํ๋ฉด ๋๋ค. ์ด ์ธ์๋ ์ฌ๋ฌ ๊ฐ์ ์์๊ฐ ์กด์ฌํ ์ ์๋ค. ์ ํ ๊ด๊ณ๊ฐ ๋ช
ํํ์ ๋ ์์๋ฅผ ๊ฒฐ์ ํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ์ด๋ค. ๐น ์์ ์ ๋ ฌ ํน์ง ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์๋ ๋ฐฉํฅ์ฑ ๊ทธ๋ํ์์์ ์ ๋ ฌ ๐ ์ฌ์ดํด์ด ์๋ค๋ฉด ์์ ์ ๋ ฌ ์ํ X (์์์ ์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก) ํ ๋๋ ์คํ ์ฌ์ฉ ์ง์
์ฐจ์ ๊ณ ๋ ค ๐น๏ธ ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ์ง์
์ฐจ์๋ ์ ์ ์ ๋ค์ด์ค๋ ๊ฐ์ ์์ด๊ณ , ๋นจ๊ฐ์ ์ซ์๋ ์ง์
์ฐจ์๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค. ์ง์
์ฐจ์..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
2์ฐจ์ ๋ฐฐ์ด์์ ๋ฌํฝ์ด๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ค. ๐ ์์ํ๋ ๊ณณ์์ ์ํ์ข์ฐ ๋ฐฉํฅ (๋ฐ์๊ณ ๋๋ ์๊ณ๋ฐฉํฅ)์ ๋ฐ๋ผ ๋ฌํฝ์ด ๋ฐฐ์ด์ ํํ๊ฐ ๋ฌ๋ผ์ง๋ค. ๋ฐฐ์ด ์ค์ (N/2, N/2) ์์๋ถํฐ ์์ ์ค์(N/2, N/2)์์๋ถํฐ ์์ํด์ผํ๋ฏ๋ก N์ด ํ์์ด์ด์ผ ํ๋ค. โ, โ์ผ ๋๋ 1, 3, 5, 7 .... ๋งํผ ์ด๋ํ๋ ์นธ์ด ์ฆ๊ฐํ๋ค. โ, โ์ผ ๋๋ 2, 4, 6, 8 .... ๋งํผ ์ด๋ํ๋ ์นธ์ด ์ฆ๊ฐํ๋ค. 2๋ฒ ๋ฐฉํฅ์ ๋ฐ๊ฟ ๋๋ง๋ค ์ด๋ํ๋ ์นธ์ ์ฆ๊ฐ์ํจ๋ค. ๐ moveCnt++ ํ์ฌ๋ ์ค์์์ ์ผ์ชฝ๋ฐฉํฅ์ผ๋ก ์์ํด์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๊ณ ์์ง๋ง, ์ผ์ชฝ ์ธ์ ์, ํ, ์ฐ ๋ฐฉํฅ์ผ๋ก ์์ํด์ ๋ฐ์๊ณ ๋๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ๊ฒ๋ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ฉด ๋๋ค. ๋ฐฉํฅ์ ๋ ๊ฐ์ฉ ์ง๋ง ์ง์ด์ฃผ๋ฉด ๊ฐ๋ฅ ! impor..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
https://www.acmicpc.net/problem/12865 12865๋ฒ: ํ๋ฒํ ๋ฐฐ๋ญ ์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 โค N โค 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 โค K โค 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 โค W โค 100,000)์ ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 โค V โค 1,000) www.acmicpc.net ๐น๏ธ Knapsack ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ DP ๋ฌธ์ ์ค ํ๋๋ก, ๋ฐฐ๋ญ์ ํฌ๊ธฐ k์ n๊ฐ์ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ(w)์ ๊ฐ์น(v)๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ๋ฐฉ์ ๋ฌผ๊ฑด์ k์ ๋์ง ์๋๋ก ๋ฃ๊ณ ์ต๋ ๊ฐ์น์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ex) ๋ฐฐ๋ญ์ ํฌ๊ธฐ๋ k์ด๊ณ , 5๊ฐ์ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ์ ๊ฐ์น๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ก์ ๋, ์ต๋ ๊ฐ์น์ ํฉ์ ๊ตฌํ๊ธฐ ๋ฌผ๊ฑด 1 : w =..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
LIS(Longest Increasing Subsequence)๋ ์์๊ฐ n๊ฐ์ธ ๋ฐฐ์ด์์ ์ผ๋ถ ์์๋ฅผ ๊ณจ๋ผ๋ด์ด ๋ง๋ ๋ถ๋ถ ์์ด ์ค์์ ๋ชจ๋ ์์๋ค์ด ์ด์ ์์๋ณด๋ค ํฌ๋ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ๊ณ ๊ทธ ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ ์์ด์ด๋ค. ์์๋ฅผ ๋ค์ด๋ณด์. A = {10, 20, 10, 30, 20, 50}์ธ ์์ด์์ ์์๊ฐ ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ {10, 20}, {20, 30, 50}, {10, 30, 50} ๋ฑ์ด ์๋๋ฐ, ๊ทธ ์ค ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๊ฐ 4์ธ {10, 20, 30, 50}์ด๋ค. ๋ํ ๋ฌธ์ ๋ ์๋์ ๊ฐ๋ค. https://www.acmicpc.net/problem/11053 11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
์ต์์ ์ฅํธ๋ฆฌ(MST / Minimum Spanning Tree)๋ ๋ฐฉํฅ์ฑ์ด ์๋ ๊ฐ์ค ๊ทธ๋ํ์์ ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ์ต์์ธ ์ ์ฅ ํธ๋ฆฌ์ด๋ค. ๐น๏ธ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ & ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ๐น ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ : ๊ฐ์ ์ค์ฌ์ผ๋ก ์ต์ ์ ์ฅ ํธ๋ฆฌ ๊ตฌํ๊ธฐ (๊ฐ์ ์ ๊ฐ์๊ฐ ์ ๋ค๋ฉด ํ๋ฆผ๋ณด๋ค ํจ์จ์ !) ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ ๊ฐ์ค์น๊ฐ ๋ฎ์ ๊ฐ์ ๋ถํฐ ์ ํํ๋ค. ์ ํํ ๊ฐ์ ์ผ๋ก ์ธํด ์ฌ์ดํด์ด ํ์ฑ๋๋ค๋ฉด ๋ค์ ๊ฐ์ ์ผ๋ก ๋์ด๊ฐ๊ณ , ์ฌ์ดํด์ด ํ์ฑ๋์ง ์๋๋ค๋ฉด ํด๋น ๊ฐ์ ์ ์ ํํ๋ค. โ ์ฌ์ดํด์ด ํ์ฑ๋๋์ง ํ์
ํ๊ธฐ ์ํด Union-Find ์ฐ์ฐ์ ์งํํ๋ค. ์ ์ ์ด N๊ฐ์ธ ๊ทธ๋ํ์ผ ๋, N-1๊ฐ์ ๊ฐ์ ์ ์ ํํ๋ค๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฃํ๋ค. ๐น ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ : ์ ์ ์ค์ฌ์ผ๋ก ์ต์ ์ ์ฅ ํธ๋ฆฌ ๊ตฌํ๊ธฐ (์ ์ ์ ๊ฐ์๊ฐ..