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. ์ด์ 1 2 ๋ค์