๐ฟ Data
[TIL] 100. [์๊ณ ๋ฆฌ์ฆ] ํ์
ํค์๋ ํ์ ์ ํํ์ ์ด์งํ์ [์๊ณ ๋ฆฌ์ฆ] ํ์ ์๋ฃ๋ฅผ ํ๋์ฉ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ฌธ์ ๋ฅผ ํ์ํด์ผํ๋ค. [ํ์] ์ ํํ์(Linear Search) ๊ธฐ๋ณธ์ ์ธ ํ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๋ฒ์ ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ชจ๋ ๊ฒ์ํ๋ ๊ฒ def linear_search(arr, value): for i in range(len(arr)): if arr[i] == value: return i [ํ์] ์ด์งํ์(Binary Search) ํ์์ ํ ๋, ๋ฐ์ฉ ์ค์ฌ๋๊ฐ๋ฉด์ ํ์ ๋ง์น ์ ๋ค์ด ๊ฒ์์์ ๊ฐ์ด๋ฐ ๊ฐ์ ๋งํ๋ฉด ์ ์ ์ขํ๋๊ฐ๋ ๋ฐฉ์ ๋จ, ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ง ์๋ํ๋ค. O(logn)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.(๊ทธ๋ฃน์ 2๊ฐ์ฉ ๋๋๋ฉด์ ์งํํ๊ธฐ ๋๋ฌธ) def binary_search(arr, valu..
[TIL] 99. [์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ
ํค์๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ ฌ ๋ฒ๋ธ์ ๋ ฌ ์ฝ์ ์ ๋ ฌ ์ ํ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ๊ตฌ๋จ์ ์์๋ก ๋ ๋ค๋ฉด ๊ตฌ๊ตฌ๋จ์ ์ซ์๋ค์ ์๋ฃ๊ตฌ์กฐ, ๊ณฑ์ ์ ์๊ณ ๋ฆฌ์ฆ์ ํด๋น ์ฆ, ์๋ฃ๊ตฌ์กฐ๋ ๊ธฐ๋ฐ, ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฉ๋ฒ [์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ๋ง ๊ทธ๋๋ก ์๋ฃ๋ค์ ์ผ์ ํ ๊ท์น์ ๋ง๊ฒ ์ ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ(๋ณดํต์ ์ค๋ฆ์ฐจ์) [์ ๋ ฌ] ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort) ์ค๋ฅธ์ชฝ๋ถํฐ ์ ๋ ฌ๋๋ฉฐ ๋ง์น ๊ฑฐํ์ด ์ฌ๋ผ์ค๋ ๋ชจ์ ์๋ก ์ด์ํ ๋ ์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๊ณ ๊ตํ์ ๋ฐ๋ณต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ์ฌ์ค์ ๊ฐ์ฅ ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ 1๋ฒ์งธ ํญ๋ชฉ๊ณผ 2๋ฒ์งธ ๋น๊ต ํ 1๋ฒ์งธ๊ฐ ๋ ํฌ๋ฉด ํญ๋ชฉ ๊ต์ฒด 2๋ฒ์งธ, 3๋ฒ์งธ ~ ์ญ 1๋ฒ์ฒ๋ผ ๋ฐ๋ณต (ํ๋ฒ์ ์ฌ์ดํด์ ๋ง์น๋ฉด ๊ฐ์ฅ ๋์๋ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์์นํ๊ฒ ๋จ. ๋ฐ๋ผ์ ๊ฐ์ฅ ๋๋จ์ ๋ ์๋ด๋ ๊ด์ฐฎ๋ค.) ํ ์ฌ์ดํด์ ๋๊ณ ๋๋ฉด ๋ง์ง๋ง์ ..
[TIL] 98. [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ
ํค์๋ ๋น์ ํ ๊ตฌ์กฐ ์ด์งํธ๋ฆฌ ์ด์งํ์ํธ๋ฆฌ ํธํฅ์ด์งํธ๋ฆฌ [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ ๋ฃจํธ(root) : ํธ๋ฆฌ์ ๊ฐ์ฅ ์์ชฝ์ ์๋ ๋ ธ๋, 1๊ฐ๋ง ์กด์ฌ ๋ฆฌํ(leaf) : ํธ๋ฆฌ์ ๊ฐ์ฅ ์๋ซ๋จ์ ์๋ ๋ ธ๋(๊ฐ์ฅ ๋์๋ฝ) ์๋ธํธ๋ฆฌ(sub tree) : ํฐ ํธ๋ฆฌ์์ ์์ ํธ๋ฆฌ๋ฅผ ์ชผ๊ฐ์ ๋ณด๋ ๊ฒ(์์๋ ธ๋์ด๋ฉด์ ๋ถ๋ชจ์ญํ ์ ํ๋ ๋ ธ๋๊ฐ ์๋ ํธ๋ฆฌ) ์ฐจ์ : ๋ ธ๋๊ฐ ๊ฐ๊ณ ์๋ ์ต๋ ์์ ๋ ธ๋ ์ ๋ ๋ฒจ : ๋ฃจํธ ๋ ธ๋๋ฅผ 0์ผ๋ก, ์๋๋ก ํ๋จ๊ณ์ฉ +1 ๋์ด : ์ ์ผ ๋๋จ ๋ ธ๋์ ๋ ๋ฒจ๊ณผ ๋ฃจํธ ๋ ธํธ ๋ ๋ฒจ์ ์ฐจ์ด ํ์ ๋ ธ๋(sibling) : ๋ถ๋ชจ๊ฐ ๊ฐ์ ๋ ธ๋ [ํธ๋ฆฌ] ์ด์งํธ๋ฆฌ ๊ฐ ๋ ธ๋ ๋ณ๋ก, ์ต๋ 2๊ฐ์ ์๋ธ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์์(left์ right) ํธ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋ฉด์ ๊ฐ์ฅ ๋ง์ด ํ์ฉ ํฌํ์ด์งํธ๋ฆฌ : ๋ชจ๋ ๋ฆฌํ๋ ธ๋๋ค์ด ๋์ผํ ๋ ๋ฒจ์ ..
[TIL] 97. ์ฌ๊ท(Recursion)
ํค์๋ ์ํ์ ์ฌ๊ณ ์ฌํธ์ถ ๋ก์ง ์ฌ๊ท ํธ์ถ -> ์คํ์ ๊ฐ๋ (ํจ์ ๋ด๋ถ) ๋ฒ ์ด์ค ์ผ์ด์ค ์ถ๊ฐ ์กฐ๊ฑด ์ฌ๊ท(Recursion) ์๊ธฐ ์์ ์ ์ฌํธ์ถ ํ๋ ๊ฒ, ์ข ๋ฃ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋๊น์ง ๋ฐ๋ณต ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌํธ์ถ ๋ก์ง ๊ธฐ์ต(์ถ๊ฐ ์กฐ๊ฑด) ์ฌ๊ทํจ์๋ฅผ ๋ฉ์ถ๋ base case(๋ฐ๋ณต์ ์ค์งํ๋ ์กฐ๊ฑด) ํ์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ ๋๊น์ง ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋๋ ๊ฒ ์ฌ๊ท ์์ def sum_list(items): if len(items) == 1: return items[0] # base case -> ์ฌ๊ทํจ์ ์ข ๋ฃ else: return items[0] + sum_list(items[1:]) # ์ถ๊ฐ ์กฐ๊ฑด -> ์ฌํธ์ถ ๋ก์ง [์ฌ๊ท] ์กฐ๊ฑด base case(๊ธฐ๋ณธ ์ผ์ด์ค)๊ฐ ์์ด์ผ ํ๋ค. ์ถ๊ฐ ์กฐ๊ฑด์ ๋..
[TIL] 96. ์ถ์ ์๋ฃํ(Abstract Data Type ; ADT)
ํค์๋ ADT(์ถ์์๋ฃํ) ์ฐ๊ฒฐ๋ฆฌ์คํธ ์คํ/ํ ์ถ์์๋ฃํ(ADT) ํ์ด์ฌ์๋ ๊ธฐ๋ณธ ์๋ฃํ์ธ ์ซ์, ๋ฌธ์์ด, ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ ๋ฑ์ด ์กด์ฌ ADT๋ ๊ธฐ๋ณธ ์๋ฃํ์ฒ๋ผ ๋ก์ง์ด ๊ตฌ์ฑ๋์ด์๋ ์๋ฃ๊ฐ ์๋ ํ์ํ ๊ธฐ๋ฅ๋ง ์ฌ์ฉ์๊ฐ ์ง์ ๊ตฌํํ ๋ก์ง ์ถ์ํ : ์ํํธ์จ์ด๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ์๊ณ ์ด๋ฐ ๋ถ๋ถ์ ๊ฐ๋จํ๊ฒ ํต์ฌ๋ง ์ค๋ช ํ๋ ๊ฒ ์ฐ๊ฒฐ๋ฆฌ์คํธ(Linked-list) ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๊ฐ ๋ ธ๋๊ฐ 1. ๋ณธ์ธ์ ๊ฐ, 2. ๋ค์ ๋ ธ๋์ ๋ํ ์ ๋ณด ๋ฅผ ๋ด๊ณ ์๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ ํค๋ ๋ ธ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ๊ฑฐ์ณ์ผํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด๋ณด๋ค ์๊ฐ๋ณต์ก๋๊ฐ ํฌ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ ๊ฑฐํ ๋, ๋ ธ๋ ์ฌ์ด์ ๋งํฌ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๋ค.(์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฅ์ ) ๋จ๋ฐฉํฅ, ์๋ฐฉํฅ, ํํ ์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ์กด์ฌ ๋ฐฐ์ด๊ณผ ๋ฌ..