๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SW์‚ฌ๊ด€ํ•™๊ต ์ •๊ธ€/๊ฐœ๋ฐœ์ผ์ง€ - TIL8

[Week05] C์–ธ์–ด - Red Black Tree Red - Black Tree ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ https://ko.wikipedia.org/wiki/๋ ˆ๋“œ-๋ธ”๋ž™_ํŠธ๋ฆฌ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(red-black tree)๋Š” ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(self-balancing binary search tree)๋กœ์„œ, ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ์—ฐ๊ด€ ๋ฐฐ์—ด ๋“ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. 1978๋…„ ๋ ˆ์˜ค ๊ท€๋ฐ”์Šค(Leo J. Guibas)์™€ ๋กœ๋ฒ„ํŠธ ko.wikipedia.org ์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ํ•œ ์ข…๋ฅ˜ BTS์˜ worst case์˜ ๋‹จ์ ์„ ๊ฐœ์„  - ์Šค์Šค๋กœ ๊ท ํ˜•์„ ๋งž์ถ”๋ฉฐ ํŽธํ–ฅ๋œ ํŠธ๋ฆฌ๊ฐ€ ๋˜์ง€์•Š๋„๋ก ํ•œ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(logN) ๊ทœ์น™ ๋ ˆ๋“œ์™€ ๋ธ”๋ž™์œผ๋กœ๋งŒ ์ด๋ฃจ์›Œ์ง„๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๋ธ”๋ž™์ด๋‹ค. nil๋…ธ๋“œ๋Š” ๋ธ”๋ž™์ด๋‹ค. ๋ ˆ.. 2022. 5. 5.
[Week04] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„ํŠธ ๋งˆ์Šคํ‚น ๋ฐฑ์ค€ ์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ(TSP)๋ฅผ ํ’€๋ ค๋ฉด ๋น„ํŠธ ๋งˆ์Šคํ‚น์— ๊ด€ํ•œ ๊ฐœ๋…์ด ํ•„์š”ํ•˜์—ฌ ๊ณต๋ถ€ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ https://www.acmicpc.net/problem/2098 2098๋ฒˆ: ์™ธํŒ์› ์ˆœํšŒ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 16) ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๋น„์šฉ ํ–‰๋ ฌ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ–‰๋ ฌ์˜ ์„ฑ๋ถ„์€ 1,000,000 ์ดํ•˜์˜ ์–‘์˜ ์ •์ˆ˜์ด๋ฉฐ, ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” 0์ด ์ฃผ์–ด์ง„๋‹ค. W[i][j]๋Š” ๋„์‹œ i์—์„œ j www.acmicpc.net keywords ๋น„ํŠธ๋งˆ์Šคํ‚น dp, ๋น„ํŠธ๋งˆ์Šคํ‚น bfs, ๋น„ํŠธ๋งˆ์Šคํฌ ์ˆœ์—ด, ๋น„ํŠธ๋งˆ์Šคํฌ ์กฐํ•ฉ ๋น„ํŠธ ๋งˆ์Šคํ‚น ์ปดํ“จํ„ฐ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์€ ํŠน์„ฑ์„ ์ด์šฉํ•ด ์ •์ˆ˜์˜ ์ด์ง„์ˆ˜ ํ‘œํ˜„์„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์“ฐ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. check = [False] * .. 2022. 4. 26.
[Week03] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - DFS / BFS ๋ฐฑ์ค€ ๋ฌธ์ œ ๋‘ ๋ฌธ์ œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์ด ์•ฝ๊ฐ„ ๋ชจํ˜ธํ•˜์ง€๋งŒ.. ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋งŒ๋‚ฌ๋˜ ๋ช‡๋ช‡ ์œ ํ˜•๋“ค์„ ๊นŒ๋จน์ง€์•Š๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•ด๋‘”๋‹ค. DFS / ๋ฐฑํŠธ๋ž˜ํ‚น nums = [1,2,3] result = [] permute = [] def dfs(): if len(permute) == len(nums) : result.append(permute[:]) return for i in range(len(nums)) : if nums[i] not in permute : permute.append(nums[i]) dfs() permute.pop() dfs() print(result) DFS 25731๋ฒˆ : ๋น™์‚ฐ https://www.acmicpc.net/problem/2573 2573๋ฒˆ: ๋น™์‚ฐ ์ฒซ ์ค„์—๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰์˜ ๊ฐœ์ˆ˜์™€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ.. 2022. 4. 21.
[Week03] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ํŠธ๋ฆฌ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ Union Find โœ… ๊ฐœ๋… / ์›๋ฆฌ : ๋Œ€ํ‘œ์ ์ธ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ, ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋Š” ์ง‘ํ•ฉ(set)์„ ํ•ฉํ•˜๊ธฐ์œ„ํ•œ ์—ฐ์‚ฐ์ด๋‹ค. ์–‘๋ฑกํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹œ์ž‘ ๋ณต์žก๋„๊ฐ€ ์•ˆ์ข‹์•„ ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ๋ถ€๋ชจ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ set์ด๋ฉฐ ํŠธ๋ฆฌ์˜ parents๋ฅผ ์ฐพ์•„ ์˜ฌ๋ผ๊ฐ€ ๋ฃจํŠธ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฃจํŠธ๊ฐ’์ด ์ง‘ํ•ฉ์˜ ๋Œ€ํ‘œ๊ฐ’์ด๋‹ค. ๋‘๊ฐœ์˜ ์ง‘ํ•ฉ์— ๋ฃจํŠธ๊ฐ’์„ ์ฐพ์•„์„œ(find) ๋ฃจํŠธ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ ๋‹ค.(union) > ํŠธ๋ฆฌ ๋†’์ด h๋งŒํผ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ง‘ํ•ฉ์˜ ํ•ฉ์ง‘ํ•ฉ ์‹œํ‚จ๋‹ค๋Š” ๊ฐœ๋…์„ ์ƒ๊ฐํ•˜๋ฉด ๋ฌธ์ œ ํ’€๋•Œ ํ—ท๊ฐˆ๋ ค์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„์˜ ๋ฃจํŠธ๋ฅผ ์ฐพ๋Š” .. 2022. 4. 20.
[Week02] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ (feat. python) ๋ชจ๋“ˆ : ํ•จ์ˆ˜,๋ณ€์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋“ค์„ ๋ชจ์•„๋†“์€ ํŒŒ์ผ - ํŒŒ์ผ๋ช…์ด ๋ชจ๋“ˆ๋ช…์ด ๋œ๋‹ค. if __name__ == "__main__" ์˜ ์˜๋ฏธ ๐Ÿ‘‰ python์€ c๋‚˜ java์™€ ๋‹ค๋ฅด๊ฒŒ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋กœ ํŠน๋ณ„ํžˆ ์‹œ์ž‘ ์ง€์ ์ด ๋ช…์‹œ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์–ธ์–ด์ด๋‹ค. ๊ทธ๋ž˜์„œ ํŠน๋ณ„ํžˆ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์—ฌ ํ˜„์žฌ ์ŠคํŠธ๋ฆฝํŠธ์˜ ์‹œ์ž‘์ ์ด ์–ด๋””์ธ์ง€ ํŒ๋‹จํ•˜๋Š”๋ฐ ๊ทธ ๋ณ€์ˆ˜๋กœ์„œ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด __name__ ์ด๋‹ค. ํŒŒ์ผ ์‹คํ–‰์‹œ์—๋Š” __name__ ๋ณ€์ˆ˜์— "__main__"์„ ์ €์žฅํ•˜๊ฒŒ ๋˜์ง€๋งŒ ํ•ด๋‹น ๋ชจ๋“ˆ์ด import ๋  ๊ฒฝ์šฐ ๋ณ€์ˆ˜์— "๋ชจ๋“ˆ๋ช…"์ด ๋“ค์–ด๊ฐ€๊ธฐ๋•Œ๋ฌธ์— if __name__ == "__main__" ๋ฌธ์€ ์‹คํ–‰๋˜์ง€์•Š๋Š”๋‹ค. __init__์˜ ์˜๋ฏธ ๐Ÿ‘‰ ์ƒ์„ฑ์ž์˜ ์˜๋ฏธ ( ์—ฌ๊ธฐ์„œ self๋Š” ์ธ์Šคํ„ด์Šค ์ž์‹ , ๋ฉ”์†Œ๋“œ์˜ ์ž„์˜์˜ ์ธ์ˆ˜ ์ •๋„์˜ ์˜๋ฏธ๋ฅผ .. 2022. 4. 14.
[Week02] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด๋ถ„ํƒ์ƒ‰ [Week02] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‚ค์›Œ๋“œ - ์ด๋ถ„ํƒ์ƒ‰, ๋ถ„ํ• ์ •๋ณต, ์Šคํƒ, ํ, ์šฐ์„ ์ˆœ์œ„ ํ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํ˜•ํƒ์ƒ‰ / ์ด๋ถ„ ํƒ์ƒ‰ ์ด๋ถ„ํƒ์ƒ‰ ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  ํƒ์ƒ‰์˜ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ• ์ด๋ถ„ํƒ์ƒ‰ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์€ ์ •๋ ฌ๋˜์–ด์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง€์ง€์•Š๊ฒŒ mid๊ฐ’์„ ์ž˜ ์ง€์ •ํ•ด์ค€๋‹ค ์ฐจ๋ก€๋กœ ์ฆ๊ฐ€(ํ˜น์€ ๊ฐ์†Œ)์‹œํ‚ค๋ฉด์„œ ํ’€์–ด์•ผํ•˜๋Š” ํƒ์ƒ‰๋ฌธ์ œ์— ํฐ ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด ์ด๋ถ„ํƒ์ƒ‰์„ ๋– ์˜ฌ๋ ค๋ณด์ž. ์‹œ๊ฐ„๋ณต์žก๋„ O(logN) โœ… ์ด๋ถ„ํƒ์ƒ‰ ๊ตฌํ˜„ํ•˜๊ธฐ while๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ def binary_serch(a,n_list) : st = 0 en = n-1 while st a : en = mid -1 else : st = mid + .. 2022. 4. 9.