๐ ์ ๊ณต ๊ณต๋ถ (55) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 11. ๋์ ๊ณํ๋ฒ ๋์ ๊ณํ๋ฒ (DP) ์ต์ ํ ๋ฌธ์ , ๋ถํ ์ ๋ณต ํ ๋ฌธ์ ๋ฅผ ๋๊ฐ์ ๋ฌธ์ ์ด๋ฉด์ ํฌ๊ธฐ๋ง ์์ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์์์ง ์๊ฐํด๋ณธ๋ค. ๊ธํ ๋ชจ์ผ๊ธฐ ๋ฌธ์ D[i][j] : (i, j)๊น์ง ์ค๋ ๋์ ๋ชจ์ ์ ์๋ ๊ธํ์ ์ต๋๊ฐ D[i][j] = max( D[i-1],[j] , D[i][j-1] ) + map[i][j]; ์ต๋ ๊ณต๋ฐฑ ์ ์ฌ๊ฐํ (ํฐ์์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ) mm ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ด ์๋ค๋ฉด, 4๊ฐ์ (m-1)(m-1) ํฌ๊ธฐ ์ ์ฌ๊ฐํ์ด ์์ด์ผ ํ๋ค๋ ์ ์์ ์ฐฉ์ํ๋ค. D[x][y]๋ (x,y)๊ฐ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ๊ผญ์ง์ ์ธ ์ ์ฌ๊ฐํ์ ์ต๋ ํฌ๊ธฐ๋ผ๊ณ ๊ฐ์ ํ๋ค. (x,y)๊ฐ ๊ฒ์์์ด๋ฉด, D[x][y] = 0 ํฐ์์ด๋ฉด, x==1 && y==1 : D[x][y] = 1 else : D[x][y] = min(.. [๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 10. ๊ณ์ฐ ๊ธฐํ ๊ณ์ฐ ๊ธฐํ 2, 3์ฐจ์ ๊ณต๊ฐ์์์ ์ , ์ , ๋ํ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ค๋ฃจ๋ ๋ฌธ์ ๊ธฐ๋ณธ ๊ฐ์ : 2์ฐจ์ ๊ณต๊ฐ, ์ ์์ขํ๋ง ๊ณ ๋ คํจ. ์ค์ ์ฐ์ฐ์ ์ง์ polygon : ์ ๋ถ๋ค๋ก ์ด๋ค์ง ๋ซํ ๋ํ. ๋ ์ ๋ถ์ด ๋ง๋๋ ์ ์ ํ๋๋ฟ์ด๋ค. ๋ชจ๋ ์ ์ ์ง๋๋ ๊ฒฝ๋ก n๊ฐ์ ์ ์ด ์ฃผ์ด์ง๋ฉด, ์ด ์ ๋ค์ ๋ชจ๋ ์ง๋๊ณ ์์์ ์ผ๋ก ๋์์ค๋ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ์์ค. ๋จ, ๊ต์ฐจํ์ง ์๊ฒ ํ์ด ๋ฐฉ๋ฒ y์ขํ๊ฐ ๊ฐ์ฅ ๋ฎ์ ์ ์ ๊ธฐ์ค์ ์ผ๋ก ์ก์. O(n) ์ด ์ ์ ์ง๋๋ ์ง์ ๊ณผ ๋ค๋ฅธ ์ ๋ค์ ์๋ ์ง์ ์ ๋ชจ๋ ๊ตฌํ๊ณ , ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ๋ ฌํ๋ค. O(n log n). ๊ทธ๋ฆฌ๊ณ ์ด ์์๋๋ก ๋ฐฉ๋ฌธํ๋ฉด ๋จ ๊ฐ์ ๊ณ์ฐ : arctan ํจ์์ ๋น์ทํ ์ฑ์ง์ ๊ฐ์ง๊ณ , ๋ถ๋ชจ๊ฐ 0์ธ ๊ฒฝ์ฐ๊ฐ ์๋๋ก ํ๋ ํจ์๋ฅผ ์ง์ ๋ง๋ค์ด์ ๊ณ์ฐํ๋ค. ์ ๊ณผ ํด๋ฆฌ๊ฑด์ ํฌํจ ๊ด๊ณ ์ ์ ์ข.. [๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 9. Flow Networks Flow Networks ๊ฐ์ค๊ทธ๋ํ G (๋ชจ๋ ๊ฐ์ค์น๋ ์์) ์์ง์ ๊ฐ์ค์น = c(e) ์์์ s์๋ ๋ค์ด์ค๋ ์์ง ์๊ณ , ๋์ฐฉ์ t์๋ ๋๊ฐ๋ ์์ง๊ฐ ์๋ค Flow : ์ด์ฉ๊ฐ๋ฅํ ์ฉ๋์ ๊ธฐ๋ฐ์ผ๋ก, ๊ฐ์ ์ ๋ฐ๋ผ ์ด๋ํ๋ ๊ฐ ๋ชจ๋ ์์ง์ ๋ํด์, 0 ≤ f(e) ≤ c(e) flow ๊ฐ ( |f| )์ s์์ ๋๊ฐ๋ ํ๋ก์ฐ ์ด๋ = t๋ก ๋ค์ด์ค๋ ํ๋ก์ฐ ์ด๋ ์ต๋ ํ๋ก์ฐ = ์ต์ cut ์ปท(cut) ์ฃผ์ด์ง ๋ ธ๋ V๋ฅผ ๋ ์งํฉ์ผ๋ก ๋ถํ ์ปท X์ ๋ํด์, f(X)๋ X๋ฅผ ์ง๋๋ flow ์ด๋ c(X)๋ X๋ฅผ ์ง๋๋ ์์ง์ c๊ฐ ์ด๋ ์ต๋ ํ๋ก์ฐ ๊ตฌํ๊ธฐ Ford-Fulkerson algorithm s→t ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ค. BFS ์งํ ๊ฐ ๊ฒฝ๋ก์ c(e) ์ต์๊ฐ์ m์ด๋ผ๊ณ ํ์ ๊ฐ ๊ฒฝ๋ก์ ์์ง๋ง๋ค, c(e) -=.. [๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 8. ์๋ก์์ธ ์งํฉ์ ํํ (Disjoint Sets) ์๋ก์์ธ ์งํฉ์ ํํ (Disjoint Sets) ์๋ก์์ธ ์งํฉ : ์ ์ฒด์งํฉ์ ๋ถ๋ถ์งํฉ๋ค ์ค, ๋์ ๊ณ ๋ฅด๋ฉด ๊ต์งํฉ=๊ณต์งํฉ, ์ ์ฒด ํฉ์งํฉ=U U์ ๋ ์์๊ฐ ๊ฐ์ ๋ถ๋ถ์งํฉ์ ์์์ธ์ง ์๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น? ์ ์ฅํธ๋ฆฌ : ๊ทธ๋ํ G์ ๋ ธ๋๋ฅผ ๋ชจ๋ ํฌํจํ๋, E์ ์ํ๋ ์์ง๋ก ๋ง๋ ํธ๋ฆฌ ์ต์์ ์ฅํธ๋ฆฌ : ํธ๋ฆฌ์ ์ํ ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ์ ์ฅ ํธ๋ฆฌ. ์ต์ ์ ์ฅ ํธ๋ฆฌ (MST) ๋ง๋ค๊ธฐ Prim’s algorithm : ํ์ฌ ์งํฉ(๋ ธ๋๋ค)๊ณผ ์ฐ๊ฒฐ๋ ์์ง ์ค ๊ฐ์ค์น๊ฐ ์ต์์ธ ๊ฒ์ MST ์งํฉ์ ํฌํจ์ํด. ๊ตฌํ๋ฒ์ ๋ฐ๋ผ ์๊ฐ๋ณต์ก๋๊ฐ ์ฐจ์ด๋จ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ = ํน์ ์์๋ ธ๋๋ถํฐ ๋ค๋ฅธ ๋ ธ๋๋ค๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํจ. ์ /๋ฌดํฅ ๊ทธ๋ํ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ = ๋ชจ๋ ๋ ธ๋๋ค์ ์ต์๋น์ฉ์ผ๋ก ์ฐ๊ฒฐ / ๋ ๋ ธ๋์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ ์ต.. [๋ธ๋ก์ฒด์ธ] 5. ๋นํธ์ฝ์ธ์ ํ๊ณ : The Limits of Bitcoin ๋ชฉ์ฐจ : ๋นํธ์ฝ์ธ์ ํ๊ณ / ๋นํธ์ฝ์ธ์ ๋์ ๋นํธ์ฝ์ธ์ ํ๊ณ ํธ๋์ญ์ ์ฒ๋ฆฌ ์๋ - ํธ๋์ญ์ ํ๋๊ฐ ์๋ฃ๋๋ ค๋ฉด? ํธ๋์ญ์ ์์ฑ, ์ธ๊ทผ๋ ธ๋ ์ ํ, ํ๋ ธ๋์ ๋ง์ด๋ ๋ ธ๋๊ฐ ๊ฒ์ฆ, ๊ฒ์ฆ ํ ๋ค๋ฅธ ํธ๋์ญ์ ๋ค๊ณผ ํจ๊ป ์ ๋ธ๋ก ์์ฑ ์ดํ ๋ธ๋ก 6๊ฐ๊ฐ ๋ ์ถ๊ฐ๋์ด์ผ ๋น๋ก์ ์์ ์น์ธ - ์ ๋ธ๋ก ์์ฑ์ ํ์ํ ํ๊ท ์๊ฐ = 10๋ถ ๋ธ๋ก 6๊ฐ => ์ต์ 60๋ถ(1์๊ฐ) ํ์! ํธ๋์ญ์ ์ด ๋ฐ๋ก ๋ค์์ ์์ฑ๋ ๋ธ๋ก์ ๋ฐ๋์ ํฌํจ๋๋ค๋ ๋ณด์ฅ๋ ์์ ์ด๋น 3~7๊ฐ์ ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ. ์ฌ์ค์ ๋ณด์์ ์ํด ์๋๋ฅผ ํฌ๊ธฐ. ๋์ ์๋์ง ์ฌ์ฉ๋ - ๋นํธ์ฝ์ธ์ ์ฐ๊ฐ ์๋์ง ์๋น๋์ 91 TWh๋ก, ํ๋ฆฌํ์ ์ฐ๊ฐ ์๋์ง ์๋น๋๊ณผ ๋น์ทํ๋ค. ํจ๊ป ์๋ชจ๋๋ ํ์๋ฐ์๊ตญ๋ ์ค์จ๋ด์ ํ์๋ฐ์๊ตญ๊ณผ ๋น์ทํ ์์ค.(50.89 Mt) ์ฑ๊ตด์ ์ฐํฉ์ ๋ฑ์ฅ.. [์ํํธ์จ์ด๊ณตํ] 14์ฅ. ์ต์ ๊ธฐ์ & 15์ฅ. ๋ฏธ๋ ๋ํฅ 14์ฅ. ์ต์ ๊ธฐ์ Cleanroom Software Engineering ์ํํธ์จ์ด์ ์ ํ์ฑ์ ๊ตฌ์ถํ ํ์์ฑ์ ๊ฐ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๊ณ ์ ์ ์ธ ๋ถ์, ์ค๊ณ, ์ฝ๋, ํ ์คํธ ๋ฐ ๋๋ฒ๊ทธ ์ฌ์ดํด ๋์ ํด๋ฆฐ๋ฃธ ์ ๊ทผ ๋ฐฉ์์ ๋ค๋ฅธ ๊ด์ ์ ์ ์ํ๋ค. ๊ฒฐํจ์ ๋ฐฉ์งํ๊ธฐ ์ํด "์ฌ์ ์ค๋น(up-front)"์ ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์. ์ ์ง์ ๋ฐ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ํต๊ณ์ ๋ฐฉ๋ฒ "์์ ๊ตฌ์กฐ ์ฌ์" ์ฑํ 'Box'๋ ์์คํ ์ ์บก์ํํจ. ์๊ตฌ์ฌํญ ์์ง(Requirements Gathering) - ๊ณ ๊ฐ ์์ค ์๊ตฌ์ฌํญ์ ๋ํ ์ค๋ช ์ ์(๊ฐ ์ฆ๋ถ์ ๋ํ) ๋ฐ์ค ๊ตฌ์กฐ ์ฌ์(Box Structure Specification) - ๊ธฐ๋ฅ ์ฌ์์ ์ค๋ช ํฉ๋๋ค. ํ์ ์ค๊ณ(Formal Design) — ์ฌ์("๋ธ๋๋ฐ์ค"๋ผ๊ณ ํจ)์ ์ํค.. [์ํํธ์จ์ด๊ณตํ] 13์ฅ. ํ์๊ด๋ฆฌ ๋ฐ ์ ์ง๋ณด์ 13์ฅ. ํ์๊ด๋ฆฌ ๋ฐ ์ ์ง๋ณด์ Software Configuration Management (SCM : ์ํํธ์จ์ด ํ์ ๊ด๋ฆฌ) ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ตฌ์ถ๋๋ฉด ๋ณํ๊ฐ ๋ถ๊ฐํผํ๋ค. ํผ๋์ ์ต์ํํ๊ธฐ ์ํด ๊ตฌ์ฑ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค. ์ํํธ์จ์ด ๊ตฌ์ฑ ๊ด๋ฆฌ(SCM)๋ ์ํํธ์จ์ด ํ๋ก์ธ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉ๋๋ ํฌ๊ด์ ์ธ ํ๋์ด๋ค. SCM ํ๋์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋ฐ๋๋ค. (1) ๋ณ๊ฒฝ์ฌํญ ํ์ธ (2) ๋ณํ ํต์ (3) ๋ณํ๊ฐ ์ ์ ํ๊ฒ ์ดํ๋๊ณ ์๋์ง ํ์ธ (4) ๊ด์ฌ์ ๊ฐ์ง ์ ์๋ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ณํ๋ฅผ ๋ณด๊ณ SCM ํ์์๋ ๋ฒ์ ๊ด๋ฆฌ, ๋ฒ ์ด์ค๋ผ์ธ ํ๋ฆฝ์ด ํฌํจ๋๋ค. Baselines (๊ธฐ์ค์ ) ๊ธฐ์ค์ ์ ๊ณต์์ ์ผ๋ก ๊ฒํ ๋๊ณ ํฉ์๋ ์ฌ์์ด๋ฉฐ ์ดํ ์ถ๊ฐ ๊ฐ๋ฐ์ ๊ธฐ์ด๊ฐ ๋๋ค. ๊ณต์์ ์ธ ๋ณ๊ฒฝ ๊ด๋ฆฌ ์ ์ฐจ๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝํ ์ ์๋ค. ๊ธฐ์ค.. [์ํํธ์จ์ด๊ณตํ] 12์ฅ. ํ ์คํ 12์ฅ. ํ ์คํ SW testing : ํ ์คํธ๋ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ธฐ ์ ์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ๋ชฉ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ฐ์ตํ๋ ๊ณผ์ ์ด๋ค. ํ ์คํธ๋ฅผ ํตํด ์ป์ ์ ์๋ ๊ฒ Errors (๋ ผ๋ฆฌ์ ์ค๋ฅ) Requirements conformance (์๊ตฌ์ฌํญ ์ผ์น ์ฌ๋ถ) Performance (์ฑ๋ฅ) Indication of quality (ํ์ง ์์ค) ๋๊ฐ ํ ์คํธํด์ผ ํ ๊น? Developer ์์คํ ์ ์ดํดํ๊ณ ์์ ์กฐ์ฌ์ค๋ฝ๊ฒ ํ ์คํธํ๊ณ ์ ๋ฌ์ ์ด๋์ด๋ “๊ตฌ์ฑ ์์ ” Independent Tester ์์คํ ์ ๋ํด ๋ฐฐ์์ผ ํจ ๊ณ ์ฅ๋ด๋ ค๊ณ ์๋ํจ ํ์ง์ ์ด๋์ด๋ “ํ๊ดด์ ์ธ ์ผ” ์ ๋ต์ ์ ๊ทผ ํ ์คํธ๋ ์ฌ์ ์ ๊ณํํ๊ณ ์ฒด๊ณ์ ์ผ๋ก ์ํํ ์ ์๋ ์ผ๋ จ์ ํ๋์ ๋๋ค. ํน์ฑ ํจ๊ณผ์ ์ธ ๊ธฐ์ ๊ฒํ ์ํ ๊ตฌ์ฑ ์์ ์์ค์์ ์์ํ์ฌ.. ์ด์ 1 2 3 4 ยทยทยท 7 ๋ค์