๋ชฉ๋ก๐Ÿฆฅ ์ฝ”ํ…Œ/์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with python (41)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_34_์„œ๋กœ์†Œ ์ง‘ํ•ฉ์„ ํ™œ์šฉํ•œ ์‚ฌ์ดํด ํŒ๋ณ„

220213 ์ž‘์„ฑ https://www.youtube.com/watch?v=Mw8W56qNL8U&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=34 1. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์„ ํ™œ์šฉํ•œ ์‚ฌ์ดํด ํŒ๋ณ„ : ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋‚ด์—์„œ์˜ ์‚ฌ์ดํด ํŒ๋ณ„ ( ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ์˜ ์‚ฌ์ดํด ์—ฌ๋ถ€๋Š” DFS ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒ๋ณ„ ) : ์‚ฌ์ดํด ํŒ๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1) ๊ฐ ๊ฐ„์„ ์„ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ ๋‘ ๋…ธ๋“œ์˜ ๋ฃจํŠธ ๋…ธ๋“œ ํ™•์ธ - ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค๋ฉด ๋‘ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํ•ฉ์ง‘ํ•ฉ ์ˆ˜ํ–‰ - ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ๊ฐ™๋‹ค๋ฉด ์‚ฌ์ดํด ๋ฐœ์ƒ! 2) ๊ทธ๋ž˜ํ”„์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ๊ฐ„์„ ์— ๋Œ€ํ•ด 1๋ฒˆ ๊ณผ์ • ๋ฐ˜๋ณต python # ํŠน์ • ์›์†Œ๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์„ ์ฐพ๊ธฐ def find_parent(parent, x): # ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_33_์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ

220213 ์ž‘์„ฑ https://www.youtube.com/watch?v=Ha0w2dJa2Nk&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=33 1. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ (Disjoint Sets)SS : ๊ณตํ†ต ์›์†Œ๊ฐ€ ์—†๋Š” ๋‘ ์ง‘ํ•ฉ 2. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์ž๋ฃŒ ๊ตฌ์กฐ : ์„œ๋กœ์†Œ ๋ถ€๋ถ„ ์ง‘ํ•ฉ๋“ค๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์›์†Œ๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ -> ํ•ฉ์ง‘ํ•ฉ (union) : ๋‘ ๊ฐœ์˜ ์›์†Œ๊ฐ€ ํฌํ•จ๋œ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ -> ์ฐพ๊ธฐ (find) : ํŠน์ •ํ•œ ์›์†Œ๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์ด ์–ด๋–ค ์ง‘ํ•ฉ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ฐ์‚ฐ : ํ•ฉ์น˜๊ธฐ ์ฐพ๊ธฐ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ ๋ถˆ๋ฆฐ๋‹ค 1) ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ ํ™•์ธ, ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ A, B ํ™•์ธ - A์™€ B์˜ ๋ฃจํŠธ ๋…ธ๋“œ A', B' ๊ฐ๊ฐ ์ฐพ๊ธฐ - A'๋ฅผ B'์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์„ค..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_32_์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ ๋ฌธ์ œ ํ’€์ด

220213 ์ž‘์„ฑ https://www.youtube.com/watch?v=liuUazQaLuU&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=32 ์ „๋ณด : N ๊ฐœ์˜ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค : ๊ฐ ๋„์‹œ์˜ ๋ฒˆํ˜ธ์™€ ํ†ต๋กœ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋„์‹œ C ์—์„œ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋Š” ๋„์‹œ์˜ ๊ฐœ์ˆ˜๋Š” ๋ช‡๊ฐœ, ๋„์‹œ๋“ค์ด ๋ชจ๋‘ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์–ผ๋งˆ์ธ๊ฐ€ : ํ•œ ๋„์‹œ์—์„œ ๋‹ค๋ฅธ ๋„์‹œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๋ฌธ์ œ๋กœ ์น˜ํ™˜ : ์šฐ์„ ์ˆœ์œ„ ํ(HEAP)๋ฅผ ์ด์šฉํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ python import heapq import sys input = sys.stdin.readline INF = int(1e9) # ๋ฌดํ•œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฐ’์œผ๋กœ 10์–ต์„ ์„ค์ • # ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜,..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_31_ ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

220212 ์ž‘์„ฑ https://www.youtube.com/watch?v=hw-SvAR3Zqg&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=31 1. ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ชจ๋‘ ๊ณ„์‚ฐ : ๋‹จ๊ณ„๋ณ„๋กœ ๊ฑฐ์ณ ๊ฐ€๋Š” ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ( ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๊ฐ–๋Š” ๋…ธ๋“œ ์ฐพ๊ธฐ๋Š” ํ•„์š” X ) : 2์ฐจ์› ํ…Œ์ด๋ธ”์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด ์ €์žฅ : ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์œ ํ˜•์— ์†ํ•œ๋‹ค : ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ํŠน์ •ํ•œ ๋…ธ๋“œ K ๋ฅผ ๊ฑฐ์ณ ๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ํ™•์ธ ( a ์—์„œ b ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ณด๋‹ค a ์—์„œ k ๋ฅผ ๊ฑฐ์ณ b ๋กœ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์€์ง€ ๊ฒ€์‚ฌ ) 1) ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ดˆ๊ธฐํ™” 2) k ๋…ธ๋“œ ๊ฑฐ์ณ ๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ํ…Œ์ด๋ธ” ๊ฐฑ์‹  python INF = i..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_30_๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

220212 ์ž‘์„ฑ https://www.youtube.com/watch?v=F-tkqjUiik0&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=30 1. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ : ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ํ•œ ์ง€์ ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ - ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ - ๋ชจ๋“  ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ : ๊ฐ ์ง€์ ์€ ๊ทธ๋ž˜ํ”„์—์„œ ๋…ธ๋“œ๋กœ ํ‘œํ˜„ : ์ง€์ ๊ฐ„ ์—ฐ๊ฒฐ๋œ ์„ ์€ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„ 2. ๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ : ํŠน์ •ํ•œ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ณ„์‚ฐ : ์Œ์˜ ๊ฐ„์„ ์ด ์—†์„ ๋•Œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ ( ํ˜„์‹ค์„ธ๊ณ„ ๋„๋กœ๋Š” ์Œ์˜ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„๋˜์ง€ x ) : ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ถ„๋ฅ˜ ( ๋งค ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ๋น„์šฉ์ด ์ ์€..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_29_๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๋ฌธ์ œ ํ’€์ด

220211 ์ž‘์„ฑ https://www.youtube.com/watch?v=tWX6FZwwQMI&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=29 ๊ฐœ๋ฏธ์ „์‚ฌ : ์ตœ์†Œํ•œ ํ•œ ์นธ ์ด์ƒ ๋–จ์–ด์ง„ ์‹๋Ÿ‰์ฐฝ๊ณ ๋ฅผ ์•ฝํƒˆํ•˜์ž! : ์ธ์ ‘ํ•œ ์‹๋Ÿ‰์ฐฝ๊ณ  ๊ณต๊ฒฉ๋ฐ›์œผ๋ฉด ๋“คํ‚จ๋‹ค : ์‹๋Ÿ‰์ฐฝ๊ณ  N๊ฐœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‹๋Ÿ‰์˜ ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ 1) a(i) = i๋ฒˆ์งธ ์‹๋Ÿ‰์ฐฝ๊ณ ๊นŒ์ง€์˜ ์ตœ์ ์˜ ํ•ด (์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‹๋Ÿ‰์˜ ์ตœ๋Œ€๊ฐ’) 2) k(i) = i๋ฒˆ์จฐ ์‹๋Ÿ‰์ฐฝ๊ณ ์— ์žˆ๋Š” ์‹๋Ÿ‰์˜ ์–‘ python # ์ •์ˆ˜ N์„ ์ž…๋ ฅ ๋ฐ›๊ธฐ n = int(input()) # ๋ชจ๋“  ์‹๋Ÿ‰ ์ •๋ณด ์ž…๋ ฅ ๋ฐ›๊ธฐ array = list(map(int, input().split())) # ์•ž์„œ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_28_๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

220209 ์ž‘์„ฑ https://www.youtube.com/watch?v=rWbjQphRE9A&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=28 1. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ ํšจ์œจ์„ฑ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ : ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ (์ž‘์€ ๋ฌธ์ œ)๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅ (๋‹ค์‹œ ๊ณ„์‚ฐ X) : ๋‘ ๊ฐ€์ง€ ํƒ‘๋‹ค์šด(์œ„์—์„œ ์•„๋ž˜, ํ•˜ํ–ฅ์‹ ), ๋ณดํ…€์—…(์•„๋ž˜์—์„œ ์œ„, ์ƒํ–ฅ์‹)์œผ๋กœ ๊ตฌ์„ฑ : ๋™์  ๊ณ„ํš๋ฒ• : ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋™์  ํ• ๋‹น์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ• => ๋‹ค์ด๋‚˜๋ฏน์€ ๋ณ„๋‹ค๋ฅธ ์˜๋ฏธ ์—†์ด ์‚ฌ์šฉ 1. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ (Optimal Substructure) : ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹ต..

[์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with Python]_27_์ด์ง„ ํƒ์ƒ‰ ๋ฌธ์ œํ’€์ด

220209 ์ž‘์„ฑ https://www.youtube.com/watch?v=jjOmN2_lmdk&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=27 1. ํŒŒ๋ผ๋ฉ”ํŠธ๋ฆญ ์„œ์น˜ (Parametric Search) : ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ๊ฒฐ์ • ๋ฌธ์ œ (์˜ˆ or ์•„๋‹ˆ์˜ค) ๋กœ ๋ฐ”๊พธ์–ด ํ•ด๊ฒฐ ( ํŠน์ •ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์•Œ๋งž์€ ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ์ตœ์ ํ™” ๋ฌธ์ œ ) ๋–ก๋ณถ์ด ๋–ก ๋งŒ๋“ค๊ธฐ : ์ ˆ๋‹จ๊ธฐ์— ๋†’์ด(H) ๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์ค„์ง€์–ด์ง„ ๋–ก์„ ํ•œ ๋ฒˆ์— ์ ˆ๋‹จ : ๋†’์ด๊ฐ€ H ๋ณด๋‹ค ๊ธด ๋–ก์€ H ์œ„์˜ ๋ถ€๋ถ„์ด ์ž˜๋ฆฌ๊ณ , ๋‚ฎ์€ ๋–ก์€ ์ž˜๋ฆฌ์ง€ ์•Š์Œ : ์†๋‹˜์€ ์ž˜๋ฆฐ ๋–ก ๊ธธ์ด๋ฅผ ๊ฐ€์ ธ๊ฐ : ์†๋‹˜์ด ์š”์ฒญํ•œ ์ด ๊ธธ์ด๊ฐ€ M ์ผ ๋•Œ, ์ ์–ด๋„ M๋งŒํผ์˜ ๋–ก์„ ์–ป๊ธฐ ์œ„ํ•ด, ์ ˆ๋‹จ๊ธฐ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋†’์ด์˜ ์ตœ๋Œ“๊ฐ’ - ์ ์ ˆํ•œ..