πŸ“‚ μ•Œκ³ λ¦¬μ¦˜/ETC

    졜μž₯κ³΅ν†΅λΆ€λΆ„μˆ˜μ—΄(Longest Common Subsequence - LCS)

    1. κ°œλ… 🐒 졜μž₯κ³΅ν†΅λΆ€λΆ„μˆ˜μ—΄(Longest Common Subsequence)μ΄λž€ 주어진 μˆ˜μ—΄μ˜ λΆ€λΆ„ μˆ˜μ—΄μ—μ„œ κ°€μž₯ κΈ΄ 것을 μ˜λ―Έν•œλ‹€. μœ„μ˜ κ·Έλ¦Όμ—μ„œ μ•Œ 수 μžˆλŠ” κ²ƒμ²˜λŸΌ λΆ€λΆ„ μˆ˜μ—΄μ΄ 연속적일 ν•„μš”λŠ” μ—†λ‹€. 2. λ™μž‘λ°©μ‹ 🦎 λ™μž‘ 방식은 DPλ₯Ό μ΄μš©ν•œλ‹€. λ¬Έμžμ—΄ A와 λ¬Έμžμ—΄ Bκ°€ μ£Όμ–΄μ‘Œλ‹€κ³  ν•˜μž. λ¬Έμžμ—΄ A와 λ¬Έμžμ—΄ Bλ₯Ό ν•œ κΈ€μžμ”© λΉ„κ΅ν•œλ‹€. λΉ„κ΅ν•˜λŠ” λ¬Έμžκ°€ κ°™λ‹€λ©΄ DP[i][j] = DP[i - 1][j - 1] + 1이 λœλ‹€. λΉ„κ΅ν•˜λŠ” λ¬Έμžκ°€ λ‹€λ₯΄λ‹€λ©΄ DP[i][j]λŠ” DP[i-1][j]와 DP[i][j-1] 쀑에 큰 κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€. 1번과 2번 과정을 λ°˜λ³΅ν•œλ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” DP[i][j]λŠ” λ¬Έμžμ—΄ AλŠ” iλ²ˆμ§ΈκΉŒμ§€ λ¬Έμžμ—΄ BλŠ” jλ²ˆμ§ΈκΉŒμ§€ κ³ λ €ν•˜μ˜€μ„ κ²½μš°μ— 얻을 수 μžˆλŠ” 졜μž₯κ³΅ν†΅λΆ€λΆ„μˆ˜μ—΄μ˜ 길이이닀..

    졜μž₯κ³΅ν†΅λ¬Έμžμ—΄(Longest Common Substring - LCS)

    듀어가기에 μ•žμ„œ LCSλ₯Ό κ΅¬λ³„ν•˜λ„λ‘ ν•˜μž. 일반적으둜 LCS라고 ν•˜λ©΄ 졜μž₯κ³΅ν†΅λΆ€λΆ„μˆ˜μ—΄(Longest Common Subsequence)을 λœ»ν•˜μ§€λ§Œ, 졜μž₯곡톡 λ¬Έμžμ—΄(Longest Common Sustring)도 LCS라고 λΆ€λ₯΄κΈ°λ„ ν•œλ‹€. λ‘˜μ˜ 차이점은 κ΅¬ν•˜κ³ μž ν•˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄μ˜ 연속성이라고 ν•  수 μžˆλ‹€. 이번 κΈ€μ—μ„œλŠ” 졜μž₯곡톡 λ¬Έμžμ—΄(Longest Common Substring)에 λŒ€ν•΄μ„œ λ¨Όμ € μ•Œμ•„λ³΄μž 1. κ°œλ… πŸ¦† 졜μž₯κ³΅ν†΅λΆ€λΆ„λ¬Έμžμ—΄(LCS)은 μ—°μ†λœ λΆ€λΆ„ λ¬Έμžμ—΄ 쀑 κ°€μž₯ 길이가 κΈ΄ λ¬Έμžμ—΄μ„ λ§ν•œλ‹€. 2. λ™μž‘ 방식 πŸ“ λ™μž‘ 방식은 DPλ₯Ό μ΄μš©ν•œλ‹€. λ¬Έμžμ—΄ A와 λ¬Έμžμ—΄ Bκ°€ μ£Όμ–΄μ‘Œλ‹€κ³  ν•˜μž. λ¬Έμžμ—΄ A와 λ¬Έμžμ—΄ Bλ₯Ό ν•œ κΈ€μžμ”© λΉ„κ΅ν•œλ‹€. λΉ„κ΅ν•˜λŠ” λ¬Έμžκ°€ κ°™λ‹€λ©΄ DP[i][j]λŠ” DP[i-1][j-1] ..

    졜μž₯μ¦κ°€λΆ€λΆ„μˆ˜μ—΄(Longest Increasing Subsequence - LIS)

    1. κ°œλ… 🌠 졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄(LIS - Longest Increasing Subsequence)μ΄λž€ μž„μ˜μ˜ μˆ˜μ—΄λ‘œ λ§Œλ“  λΆ€λΆ„ μˆ˜μ—΄ 쀑 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ κ°€μž₯ κΈ΄ μˆ˜μ—΄μ„ μ˜λ―Έν•œλ‹€. '3 2 6 4 5 1'이 μžˆλ‹€κ³  ν•˜μž. ν•΄λ‹Ή μˆ˜μ—΄μ˜ λΆ€λΆ„ μˆ˜μ—΄μ€ {3}, {2}, {6},... {3, 2}, {2, 1},... {2, 6, 4}, {2, 4, 5},... {3, 2, 5, 1},... {2, 6, 4, 5, 1},... {3, 2, 6, 4, 5, 1} 등이 μ‘΄μž¬ν•œλ‹€. μ—¬κΈ°μ„œ 졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄μ€ {2, 4, 5}이며 κ·Έ κΈΈμ΄λŠ” 3이 되게 λœλ‹€. 이번 글을 톡해 졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄μ˜ 길이λ₯Ό κ΅¬ν•˜λŠ” 3가지 방법을 μ•Œμ•„λ³΄μž. μˆœμ„œλŠ” μ‹œκ°„λ³΅μž‘λ„κ°€ 큰 κ²ƒμ—μ„œλΆ€ν„° μž‘μ€ κ²ƒμœΌλ‘œ μ§„ν–‰λœλ‹€. 2. 방법 1 ..

    μ„œλ‘œμ†Œ 집합(Disjoint-sets)

    1. μ„œλ‘œμ†Œ μ§‘ν•©μ˜ κ°œλ… 및 이해 πŸ›Ί 1. κ°œλ… μ„œλ‘œμ†Œ μ§‘ν•©μ΄λž€ μ„œλ‘œ 쀑볡 ν¬ν•¨λœ μ›μ†Œκ°€ μ—†λŠ” 집합을 λ§ν•œλ‹€. ꡐ집합이 μ—†λŠ”(null) 집합이닀. 2. λŒ€ν‘œμž 집합에 μ†ν•œ ν•˜λ‚˜μ˜ νŠΉμ • 멀버λ₯Ό λŒ€ν‘œμžλΌκ³  ν•œλ‹€. μ΄λŠ” 집합을 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. 3. μ˜ˆμ‹œ λΉ λ₯Έ 이해λ₯Ό μœ„ν•΄ κ°„λ‹¨ν•œ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄μž. 5λͺ…μ˜ 학생(A, B, C, D, E)이 μžˆλ‹€κ³  ν•˜μž. {A}, {B}, {C}, {D}, {E} μ•„λž˜μ™€ 같은 친ꡬ 관계가 μžˆλ‹€κ³  ν•˜μž. A - B B - C D - E 친ꡬ 관계λ₯Ό ν†΅ν•΄μ„œ 2개의 집합을 λ§Œλ“€ 수 μžˆλ‹€. G1 = {A, B, C} G2 = {D, E} μ„œλ‘œ 쀑볡 ν¬ν•¨λœ μ›μ†Œκ°€ μ—†μœΌλ―€λ‘œ μ΄λŠ” μ„œλ‘œμ†Œ 집합이닀. (ν•œ μ‚¬λžŒμ΄ λΆ„μ‹ μˆ μ„ μ¨μ„œ μ–‘μͺ½ 집합에 포함될 수 μ—†μœΌλ―€λ‘œ λ‹Ήμ—°ν•œ 결과이닀.) 2. ν‘œ..